MVC4不正确的模型错误
Posted
技术标签:
【中文标题】MVC4不正确的模型错误【英文标题】:MVC4 Incorrect model error 【发布时间】:2013-01-12 10:57:23 【问题描述】:您好,我收到此错误: 传入字典的模型项的类型为“System.Collections.Generic.List`1[DBModel.Telemarketing]”,但此字典需要“TWeb.Models.LoginModel”类型的模型项
在 _Layout.cshtml 文件中我有
@Html.Partial("_LoginPartial")
此部分登录视图在 _layout 页面上的 div 中呈现(它使用 javascripts 隐藏/显示)
@model TWeb.Models.LoginModel
然后我有“电话营销”控制器有视图:
public class TelemarketingController : Controller
private Entities db = new Entities();
//
// GET: /Telemarketing/
public ActionResult Index()
return View(db.Telemarketings.ToList());
当我点击 _Layout 页面中的链接时
@Html.ActionLink("Telemarketingas", "Index", "Telemarketing", newarea="" ,new )
它抛出一个写在帖子顶部的错误。
我是 MVC 的新手,请帮助我。
【问题讨论】:
如果你的局部视图需要一个模型,你必须通过它然后你调用@Html.Partial("_LoginPartial", model)
问题是他从_layout调用部分。他应该将其设为 @Html.Action("_LoginPartial") 以便它可以生成模型
您需要在视图中使用 @model IEnumerable问题 1) 您的 Partial 需要一个模型,而您没有通过模型。
正确的语法:@Html.Partial("_LoginPartial", Model.LoginModel)
问题 2) _layout,据我所知,不能让模型通过
解决方案 1: 使用 ActionPartial。 AcionPartials 的调用方式类似,
@Html.Action("/Tools/_LoginPartial").
不同之处在于它们有一个 ActionMethod Associated 可以返回一个模型
public ActionResult _LoginPartial()
LoginModel Model= new LoginModel();
//populate Model from whatever
return View(Model);
选项 2: 将 LoginModel 对象传递给 Viewbag
Viewbag.LoginModel = new LoginModel();
并在你的_layout的Partial中引用Viewbag
@Html.Partial("_LoginPartial", Viewbag.LoginModel)
【讨论】:
【参考方案2】:您的“_LoginPartial”需要“LoginModel”模型,但由于您没有提供任何模型,Razor 引擎将其模型设置为当前视图模型(“db.Telemarketings.ToList()”)。
你所要做的就是以某种方式设置它的模型,可能是这样的:
@Html.Partial("_LoginPartial", new LoginModel())
【讨论】:
【参考方案3】:最简单的方法是从 Login Div 中删除模型声明 :)。
【讨论】:
是的,如果您不需要模型,这是最简单的方法。现在叫它一个晚上。如果此方法对您有用,那就太好了。如果您需要其他人的帮助,请发布您所做的工作,我很乐意与您一起复习。【参考方案4】:您可以使用此代码
@Html.Partial("Partial page", new ModelFroLogin())
【讨论】:
如果他的部分采用空模型,这将起作用。如果不是这样,他就不走运了。 在部分@model TWeb.Models.LoginModel 中使用它以上是关于MVC4不正确的模型错误的主要内容,如果未能解决你的问题,请参考以下文章