我有Condition
控制器:
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
_Layout.cshtml:
public class RegistrationVm
{
public string Courses { get; set; }
public string Instructors { get; set; }
}
在索引视图中:
@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>
问题是当我运行应用程序时出现此错误:
传递到字典中的模型项是类型的 'TestApp.Models.Registration.RegistrationVm',但是这个 dictionary需要一个'System.String'类型的模型项。
答案 0 :(得分:2)
shared _Layout.cshtml有一个声明的模型(@model string
),它由任何使用它的视图继承。基本上,您的索引视图的模型(@model TestApp.Models.Registration.RegistrationVm
)将被忽略。
我不知道为什么你的_Layout视图中有@model string
(模型似乎没有在那里使用),但如果你想使用继承,请参阅Pass data to layout that are common to all pages。
只需从共享布局中删除模型声明即可。