簡體   English   中英

MVC4模型錯誤不正確

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM