2016-03-26 20 views
1

次のエラーメッセージが表示されます。誰かが私に次のエラーメッセージが表示される理由を教えてください。私のモデルはコントローラをデバッグするときに値で初期化されています。エラー - ビューに送信されたモデルが正しくありません

The model item passed into the dictionary is of type 'AngularJSMvcExample.Models.RegistrationVm', but this dictionary requires a model item of type 'System.String'. 

マイモデルコード

namespace AngularJSMvcExample.Models 
{ 
    public class RegistrationVm 
    { 
     public string Courses { get; set; } 
     public string Instructors { get; set; } 
    } 
} 

するコントローラコード

namespace AngularJSMvcExample.Controllers 
{ 
    public class RegistrationController : Controller 
    { 

     private RegistrationVmBuilder _registrationVmBuilder = new RegistrationVmBuilder(); 
     // GET: Registration 
     public ActionResult Index() 
     { 
      return View(_registrationVmBuilder.BuildRegistrationVm()); 
     } 
    } 
} 

マイViewCode

@model AngularJSMvcExample.Models.RegistrationVm 

@{ 
    ViewBag.Title = "Registration"; 
    Layout = "~/Views/Shared/_Layout.cshtml"; 
} 

<div class="container" ng-controller="RegistrationController"> 

    <div class="row"> 
     <div class="navbar navbar-default"> 
      <div class="navbar-header"> 
       <ul class="nav navbar-nav"> 
        <li> 
         <span class="navbar-brand">Registration</span> 
        </li> 

       </ul> 

      </div> 
      <div class="navbar-collapse collapse"> 
       <ul class="nav nav-bar"> 
        <li ><a href="/Courses">Browse Catalog</a></li> 
        <li><a href="/Instructors">Browse Instructors</a></li> 
       </ul> 
      </div> 
     </div> 
    </div> 

</div> 

マイRegistrationVmBuilderコード

namespace AngularJSMvcExample.Models 
{ 
    public class RegistrationVmBuilder 
    { 

     public RegistrationVm BuildRegistrationVm() 
     { 
      var registrationVm = new RegistrationVm 
      { 
       Courses = GetSerialisedCourse(), 
       Instructors = GetSerialisedInstructors() 

      }; 
      return registrationVm; 
     } 

     public string GetSerialisedCourse() 
     { 
      var courses = new[] 
      { 
       new CourseVm {Number= "100", Name= "Physis", Instructor = "Jan"}, 
       new CourseVm {Number= "101", Name= "Chemistry", Instructor = "Sal"}, 
       new CourseVm {Number= "102", Name= "Biology", Instructor = "San"}, 
       new CourseVm {Number= "103", Name= "History", Instructor = "Jack"}, 
       new CourseVm {Number= "104", Name= "Maths", Instructor = "Rahul"} 

      }; 
      var settings = new JsonSerializerSettings { ContractResolver = new CamelCasePropertyNamesContractResolver() }; 
      var serializeCourses = JsonConvert.SerializeObject(courses, settings); 
      return serializeCourses; 
     } 

     public string GetSerialisedInstructors() 
     { 
      var instructors = new[] 
      { 
       new InstructorsVm {Name= "Jan", Email= "[email protected]", Roomno = "10"}, 
       new InstructorsVm {Name= "Pal", Email= "[email protected]", Roomno = "9"}, 
       new InstructorsVm {Name= "San", Email= "[email protected]", Roomno = "11"}, 
       new InstructorsVm {Name= "Jack", Email= "[email protected]@test.com", Roomno = "12"}, 
       new InstructorsVm {Name= "Rahul", Email= "[email protected]@test.com", Roomno = "15"} 

      }; 
      var settings = new JsonSerializerSettings { ContractResolver = new CamelCasePropertyNamesContractResolver() }; 
      var serializeInstructors = JsonConvert.SerializeObject(instructors, settings); 
      return serializeInstructors; 
     } 
    } 
} 
+0

あなたは、レンダリングされているページ上の他の部分のビューを持っていますか? – Captain0

答えて

0

これはインデックスビューですか?

@model AngularJSMvcExample.Models.RegistrationVm 

@{ 
ViewBag.Title = "Registration"; 
Layout = "~/Views/Shared/_Layout.cshtml"; 
} 

<div class="container" ng-controller="RegistrationController"> 

    <div class="row"> 
     <div class="navbar navbar-default"> 
     <div class="navbar-header"> 
      <ul class="nav navbar-nav"> 
       <li> 
        <span class="navbar-brand">Registration</span> 
       </li> 

      </ul> 

     </div> 
     <div class="navbar-collapse collapse"> 
      <ul class="nav nav-bar"> 
       <li ><a href="/Courses">Browse Catalog</a></li> 
       <li><a href="/Instructors">Browse Instructors</a></li> 
      </ul> 
     </div> 
    </div> 
</div> 

+0

はい、これはインデックスビューです – Tom

+0

_layoutのどこにレンダリングされた部分的なビューやアクションがありますか?レイアウトの –

+0

は@model stringへの参照を見ました。私はそれを削除したときに動作しますが、コースやインストラクターを通過するとデータはありません – Tom

関連する問題