传递到字典中的模型的类型为'TestApp.Models.Registration.RegistrationVm',但是此字典需要System.String类型的模型项

用户2019037

我有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'的模型项。

CodeCaster

所述共享_Layout.cshtml具有声明的模型(@model string),它是由任何视图继承的使用它。因此,基本上您的索引视图的模型(@model TestApp.Models.Registration.RegistrationVm)将被忽略。

我不知道为什么要@model string在_Layout视图中使用该模型(似乎未在其中使用该模型),但是如果要使用继承,请参阅将数据传递给所有页面都通用的布局

只需从共享布局中删除模型声明即可。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

Related 相关文章

热门标签

归档