【问题标题】:MVC4 Incorrect model errorMVC4不正确的模型错误
【发布时间】: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", new{area="" },new{ })

它抛出一个写在帖子顶部的错误。

我是 MVC 的新手,请帮助我。

【问题讨论】:

  • 如果你的局部视图需要一个模型,你必须通过它然后你调用@Html.Partial("_LoginPartial", model)
  • 问题是他从_layout调用部分。他应该将其设为 @Html.Action("_LoginPartial") 以便它可以生成模型
  • 您需要在视图中使用 @model IEnumerable 才能使用它
  • 致“戴夫 A”。当我尝试使用操作时,我收到错误:堆栈不足以继续安全地执行程序。这可能是由于调用堆栈上有太多函数或堆栈上的函数使用了太多堆栈空间。
  • 好的,请展开。您使用了哪种方法?如果它是一个动作部分,你是否为它创建了一个控制器动作并实例化并传回一个值?请添加您的新代码(控制器操作并查看您的答案,以便我看到它)

标签: asp.net asp.net-mvc asp.net-mvc-3 asp.net-mvc-4 asp.net-mvc-5


【解决方案1】:

问题 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 中使用它
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-20
      • 1970-01-01
      • 1970-01-01
      • 2021-01-16
      • 1970-01-01
      相关资源
      最近更新 更多