0

View ページに次のようなエラーが表示されます。

タイプ 'System.Collections.Generic.List' を 'SchoolAdministrator.SchoolAdminProductionServices.SchoolTypeRef' に暗黙的に変換することはできません

なぜこれらのエラーが発生するのか知りたいです。私は自分がすべて正しいことをしていると信じています

コントローラ

 [SchoolAuthorizeAttribute(AdminRoles = "ViewSchoolTypeRef")]
    public ActionResult ViewSchoolType()
    {
        try
        {
            Guid SchoolTypeRefId = Request["SchoolTypeRefId"] != null ? new Guid(Request["SchoolTypeRefId"]) : Guid.Empty;
            ViewBag.merchantTypeRef = SchoolAdministrator.Models.SchoolAdminProduction.SchoolTypeRef.LoadSchoolTypeRef(SchoolTypeRefId, string.Empty, string.Empty, string.Empty);
        }
        catch (Exception e)
        {
            Commons.ErrorHandling.ReportError("SchoolAdministrator.Controllers.SchoolController ViewSchoolType",e);
        }
        return View();
    }

モデル

    public class SchoolTypeRef
{
    /// <summary>
    /// This function allows us to load the School types if parametrs are empty, else load a single user by their ID 
    /// </summary>
    /// <param name="SchoolTypeRef">The merchant type ref id, unique ID</param>
    /// <param name="name">name of the School type</param>
    /// <param name="description">description of the School type</param>
    /// <returns>List of all users or list of a single user</returns>
      public static List<SchoolAdminProductionServices.SchoolTypeRef> LoadSchoolTypeRef(Guid SchoolTypeRef, string name, string description, string fdrSchoolTypeCode)
    {
        try
        {
            SchoolAdminProductionServices.SchoolAdminProductionServicesSoapClient client = new SchoolAdminProductionServices.SchoolAdminProductionServicesSoapClient();
            return client.LoadSchoolTypeRef(SchoolTypeRef, name, description, fdrSchoolTypeCode).ToList<SchoolAdminProductionServices.SchoolTypeRef>();
        }
        catch (Exception e)
        { 
            Commons.ErrorHandling.ReportError("SchoolTypeRef.LoadSchoolTypeRef()",e);
        }
        return new List<SchoolAdminProductionServices.SchoolTypeRef>();
    }
   }

<% %> の間でエラーが発生した場所を表示

   <%SchoolAdministrator.DarkstarAdminProductionServices.SchoolTypeRefmerchantTypeRef =
          ViewBag.SchoolTypeRef ??
            new SchoolAdministrator.SchoolAdminProductionServices.SchoolTypeRef();%>
<table>
 <tr>
       <td colspan="2" class="tableHeader"> School Type Ref Details</td>
   </tr> 
   tr>
       td class="label"> Name:</td>
       td class="content"><%=SchoolTypeRef.name%></td>
   /tr>
    tr>
       td class="label"> Description:</td>
       td class="content"><%=SchoolTypeRef.description%></td>
   /tr>
    tr>
       td class="label"> FDR SchoolType Code:</td>
       td class="content"><%=SchoolTypeRef.fdrSchoolTypeCode%></td>
  /tr>
/table>
4

3 に答える 3

1

Web サービス呼び出しは schoolRefTypes の List<> を返しますが、ビューは schoolRefTypes の単一インスタンスであるかのようにリストにアクセスしようとしています。schoolRefTypes のリストをビューバッグに割り当てる代わりに、1 つだけを割り当てます。これを行う簡単な方法は、.First() メソッドを使用してリストの最初の要素を取得することです。ID などの MVC 規則に基づいて、何らかの方法で特定の schoolRefType に制限したいと思うでしょう。

于 2012-07-03T14:42:15.657 に答える
0

リストは一般的なリストです。学校はあなたのカスタム オブジェクトです。asp.net は、タイプからタイプの汎用リストに変換できません。リストが空でないかどうかを確認してから、要素にアクセスしてください。

于 2012-07-03T14:43:29.177 に答える
0

変化する

<%SchoolAdministrator.DarkstarAdminProductionServices.SchoolTypeRefmerchantTypeRef =     ViewBag.SchoolTypeRef ?? new     SchoolAdministrator.SchoolAdminProductionServices.SchoolTypeRef();%>

<%SchoolAdministrator.DarkstarAdminProductionServices.SchoolTypeRefmerchantTypeRef SchoolTypeRef =     ViewBag.SchoolTypeRef ?? new     SchoolAdministrator.SchoolAdminProductionServices.SchoolTypeRef();%>
于 2012-07-03T14:44:08.810 に答える