[英]MVC4 Incorrect model error
嗨,我收到此錯誤: 傳遞到字典中的模型項的類型為'System.Collections.Generic.List`1 [DBModel.Telemarketing]',但此字典需要類型為'TWeb.Models.LoginModel'的模型項
在_Layout.cshtml文件中我有
@Html.Partial("_LoginPartial")
這個部分登錄視圖在_layout頁面上的div中呈現(它用javaScripts隱藏/顯示)
@model TWeb.Models.LoginModel
然后我有“Telemarketings”控制器有視圖:
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", new{area="" },new{ })
它會拋出一個寫在帖子頂部的錯誤。
我是MVC的新手,請幫幫我。
您的“_LoginPartial”需要“LoginModel”模型,但由於您沒有提供任何模型,因此Razor引擎將其模型設置為當前視圖模型(“db.Telemarketings.ToList()”)。
所有你需要做的就是以某種方式設置它的模型,可能是這樣的:
@Html.Partial("_LoginPartial", new LoginModel())
問題1)你的部分需要一個模型,你沒有傳遞一個。 正確的語法: @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)
最簡單的方法是從Login Div :)中刪除模型聲明。
您可以使用此代碼
@Html.Partial("Partial page", new ModelFroLogin())
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.