Asp.net mvc 将模型对象传递到视图时出错

Asp.net mvc 将模型对象传递到视图时出错,asp.net-mvc,asp.net-mvc-4,Asp.net Mvc,Asp.net Mvc 4,关于这个问题,我提到了几个问题,但我认为我的问题没有什么不同 我已经创建了一个登录页面,成功登录后,它应该会打开主控制器的索引视图。由于我的索引视图需要模型绑定表数据,所以我需要在登录按钮操作中传递模型对象和视图。我希望你能理解这个场景 这是我的登录控制器: public ActionResult Login() //Get Method for Login { return View("Login"); } [HttpPost] // Post Met

关于这个问题,我提到了几个问题,但我认为我的问题没有什么不同

我已经创建了一个登录页面,成功登录后,它应该会打开主控制器的索引视图。由于我的索引视图需要模型绑定表数据,所以我需要在登录按钮操作中传递模型对象和视图。我希望你能理解这个场景

这是我的登录控制器:

public ActionResult Login() //Get Method for Login
    {
        return View("Login");
    }
    [HttpPost]  // Post Method on Login
    public ActionResult Defaults(string username, string password)
    {
        FloorFactor ff = new FloorFactor(); // tried to create model object to pass in view
        try
        {
            Login_Details login_detail = db.Login_Details.Single(x => (x.UserName == username) && (x.Password == password));
            if (login_detail != null)
            {
                return View("../Home/Index",ff ); // need to get view Index  of home controller.
            }
        }
        catch {  }
        return View("Login");
    }
Index.cshtml的必需部分

  @model IEnumerable<Pricing_Tool_Test.FloorFactor>

@{
    ViewBag.Title = "Index";
}

只需在不使用IEnumerable的情况下尝试类名“FloorFactor”。因为您没有发送列表。 我想这会解决你的问题

@model Pricing_Tool_Test.FloorFactor
@{
    ViewBag.Title = "Index";
}

您已经了解了以下问题:
视图
需要
IEnumerable
,并且您正在传递一个
FloorFactor
的对象

您可以相应地填充模型并将其传递给视图,如-

List<FloorFactor> model = new List<FloorFactor>();
model.Add(ff);
编辑-编辑之后,我建议您重新考虑您的设计方法


在高层,如果登录成功,则重定向到控制器的
Get
操作,而不是
POST
。您不需要将
IEnumerable
实例传递给视图。现在,视图中的控件应该与
表单中的
FloorFactor
属性绑定。当用户填写这些详细信息时,然后在表单提交时使用
POST
调用
Create
操作,并将更改保存到数据库中。

或者必须返回IEnumerable对象

或者在视图中,您需要将其放在没有IEnumerable的位置

@model Pricing_Tool_Test.FloorFactor
@{
    ViewBag.Title = "Index";
}

在您看来,只需使用@model Pricing\u Tool\u Test.FloorFactor,因为您正在传递单个元素,所以不需要IEnumerableon成功登录它会在Index.cshtml上加载内容表,所以它不是单个元素,所以它需要IEnumerabley。您的代码只是传递一个名为“ff”的空对象,可能是@CodeCaster的重复项请参见编辑。n我认为没有必要对这篇文章投否决票,因为在我的搜索结果中找不到你提到的问题。链接问题的标题有很大不同。当你看不到任何搜索努力或不明确时,使用Downvote。打字速度太快,请击败我,得到几乎相同的答案。:)@哈奇诺-安静是个巧合。事实上,我的发帖速度有点慢谢谢你的回答。这对我有点帮助。通过使用您的代码,它仍然会给我错误,但如果我编写
List model=new List();返回视图(“link”,model)
如果我添加这两行,它将为我提供带有空结果的索引视图。当我传递空的模型对象时。那么,知道如何用现有数据传递实际模型吗?@harshilsah-这是因为您正在将空对象传递给列表-
FloorFactor ff=new FloorFactor()。ff对象刚刚初始化,其中没有任何值。只需使用适当的值初始化对象的属性(如果有许多类似ff的对象,请对所有对象执行相同的操作)并添加到列表中。理想情况下,您应该从业务层获取填充的模型。
return View("../Home/Index",new List<FloorFactor> { model} );
@model Pricing_Tool_Test.FloorFactor
@model Pricing_Tool_Test.FloorFactor
@{
    ViewBag.Title = "Index";
}