我在我的MVC网络应用程序上有一个编辑视图,其中包含一些部分视图。部分视图的目的是允许用户将数据添加到可能缺少的下拉列表中。部分视图适用于create
视图,但不适用于edit
视图。当您尝试编辑汽车时,parial视图会抛出错误:
传递到字典中的模型项是类型的 ' MyProject.Models.Car',但此词典需要一个模型项 类型' MyProject.Models.Manufacturer'。
这是我的代码的快照。我在这里使用Ajax表单。
修改
@model MyProject.Models.Car
@using (Ajax.BeginForm("Edit", "Car", new AjaxOptions {
HttpMethod = "POST",
OnSuccess = "success" }))
{
@Html.AntiForgeryToken()
@Html.ValidationSummary()
...form fields etc
}
@Html.Partial("_Manufacturer")
_Manufacturer(局部视图)
@model MyProject.Models.Manufacturer
@using (Ajax.BeginForm("Create", "Manufacturer", new AjaxOptions {
HttpMethod = "POST",
OnSuccess = "success" }))
{
@Html.AntiForgeryToken()
@Html.ValidationSummary()
...form fields etc
}
正如您所看到的,编辑视图允许您编辑汽车,而部分视图(作为模态触发(引导程序4.0))允许您将制造商添加到其中一个下拉列表中。 / p>
我不确定为什么会导致字典错误,Manufacturer
模型在局部视图中定义,所以不应该使用Car
模型。这是否与我们正在编辑特定记录并因此将ID作为参数传递相关?
答案 0 :(得分:3)
当你打电话给你的部分时:
B*
你没有把它传给模特。这意味着它将隐式传递调用视图的模型,在您的情况下是f(void*)
。
您需要做的是将模型添加到@Html.Partial("_Manufacturer")
来电:
MyProject.Models.Car