【问题标题】:Add Hidden Model List To Razor Form [duplicate]将隐藏模型列表添加到 Razor 表单 [重复]
【发布时间】:2013-04-09 02:44:16
【问题描述】:

我正在创建一个向导,我需要传播我创建的列表。该列表是我的联系人模型。我需要把它放在表单中,这样当我在最后一步发回控制器时,我可以将联系人列表作为向导模型的一部分(它现在只返回 null)。对于其他简单的表单对象,我使用 HiddenFor 将数据保存在模型中。这不起作用,因为隐藏的 for 只是一个文本框,而我有一个复杂的对象。

我考虑创建一个 DropDownListFor 并将其包装在一个隐藏的 div 中。这只是拼凑而成,实际上需要一些工作才能让 DropDownListFor 接受另一种对象类型(如果它可以工作的话)。

我考虑过将列表保存到 Session["Contacts"],但这似乎不是正确的 MVC 方式。谁有更好的建议?

谢谢, TJ

--更新--

作为对 merekel 的回应,我添加了更多细节以澄清我遇到问题的地方。此列表不会被用户修改,也不会显示在表单上。我在我的一个向导步骤中创建了列表,并像这样将其保存到我的模型中。

查看模型

public class WizardViewModel
{
    //...
    public List<Contact> ContactList { get; set; }
    //...
}

控制器代码

//Step 4 in the wizard
model.ContactList = CALL FUNCTION THAT CREATES LIST BASED ON FORM SELECTIONS

//other calculations needed for step 5

//Save Contacts for later
Session["Contacts"] = model.ContactList;


//Step 5 in the wizard

//Readd the contacts to the model
model.ContactList = (List<Contact>)Session["Contacts"];

//Save the model to pass to the report page
//My report viewer is on an ASPX page so I am passing all the data here with a session
Session["ReportModel"] = model;

会话保存按预期工作。我似乎不应该使用会话来使用 MVC 逐页保存数据。从 MVC 到 ASPX 时我需要这样做,所以我不担心 Session["ReportModel"] 只有 Session["Contacts"]。感谢您的任何建议。

【问题讨论】:

  • 你将不得不发布你的动作是什么样的以及你的模型在视图上是什么。 model 是否在 WizardViewModel 类型的控制器代码中?目前还不是很清楚你的控制器代码在这个过程中的哪一步。您发布的控制器代码是用于创建表单视图吗?

标签: c# asp.net-mvc asp.net-mvc-3 razor html-helper


【解决方案1】:

我相信这样的帖子会对12 有所帮助。类似的帖子还有很多关于如何发回列表的帖子。

这些联系人是从您的表单中填充的还是全局联系人?

【讨论】:

  • 感谢您的评论,我修改了我的帖子以澄清我没有正确描述的内容。
猜你喜欢
  • 1970-01-01
  • 2015-03-07
  • 2014-12-25
  • 2021-12-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-04
  • 1970-01-01
相关资源
最近更新 更多