我在MVC中将视图从视图发送到控制器时遇到问题。
这是视图中的代码:
foreach (var c in ViewBag.Categories)
{
<a href="@Url.Action("SubCategory", "Product", new { selected = selected, id = @c.Item.ID, category = @c.Item.Name })" id="link" class="list-group-item">
<span> @c.Item.Name</span>
</a>
// { TempData["Childrens"] = c.Children; }
}
ViewBag.Categories包含每个项目的子项列表,您可以在随附的屏幕截图中看到:
这是控制器中的代码:
public ActionResult SubCategory(string selected, int id, string category)
{
var childrens = TempData["Childrens"] as IEnumerable<Helpers.TreeItem<Categories>>;
var listOfChildrens = childrens.ToList();
}
我需要ActionResult参数列表中的子列表,如下所示:
public ActionResult SubCategory(string selected, int id, string category, **childrens**)
{
你能告诉我如何实现这个目标吗? 提前谢谢!
答案 0 :(得分:0)
在模型中添加您想要的模板并提交此模型,您必须在视图中将Childrens
呈现为Hidden fields
,以便在提交Controller
时可以匹配它们。
public Class MyModel {
public string selected {get;set;}
public int id {get;set;}
public string category {get;set;}
public List<Children> childrens {get;set;}
}
for (int i= 0; i< Model.Categories.Count; i++)
{
....
@Html.HiddenFor(x=> Model.childrens[i].Yourproperty1)
@Html.HiddenFor(x=> Model.childrens[i].Yourproperty2)
....
}
如果您不想创建模型并继续处理Viewbag,仍然可以但是如果您不想要的话,您必须将具有与HiddenFileds相同name
的子项所需的所有属性传递给控制器以表格形式显示
您需要根据您的业务和您的业务更改此代码 属性,但它只是为了表达我的想法。
http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx/