我有Registration
控制器:
public class RegistrationController : Controller
{
private RegistrationVmBuilder _registrationVmBuilder = new RegistrationVmBuilder();
public ActionResult Index()
{
return View(_registrationVmBuilder.BuildRegistrationVm());
}
}
和RegistrationBuilder
班级:
public class RegistrationVmBuilder
{
public RegistrationVm BuildRegistrationVm()
{
RegistrationVm registrationVm = new RegistrationVm
{
Courses = GetSerializedCourseVms(),
Instructors = GetSerializedInstructors()
};
return registrationVm;
}
}
RegistrationVm
班级:
public class RegistrationVm
{
public string Courses { get; set; }
public string Instructors { get; set; }
}
_Layout.cshtml:
@model string
<html ng-app="registrationModule">
<head>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular.min.js"></script>
<script src="~/Scripts/jquery-2.1.4.min.js"></script>
<script src="~/Scripts/bootstrap.js"></script>
<script src="~/Scripts/registration-module.js"></script>
@RenderSection("JavascriptInHead")
<link href="~/Content/bootstrap.min.css" rel="stylesheet" />
<link href="~/Content/bootstrap-state.min.css" rel="stylesheet" />
<title>College Registration</title>
</head>
<body>
@RenderBody()
</body>
</html>
并在索引视图中:
@model TestApp.Models.Registration.RegistrationVm
问题是当我运行应用程序时出现此错误:
传递到字典中的模型项的类型为'TestApp.Models.Registration.RegistrationVm',但是此字典需要类型为'System.String'的模型项。
所述共享_Layout.cshtml具有声明的模型(@model string
),它是由任何视图继承的使用它。因此,基本上您的索引视图的模型(@model TestApp.Models.Registration.RegistrationVm
)将被忽略。
我不知道为什么要@model string
在_Layout视图中使用该模型(似乎未在其中使用该模型),但是如果要使用继承,请参阅将数据传递给所有页面都通用的布局。
只需从共享布局中删除模型声明即可。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句