有谁知道如何获取下面的MODELVIEW模式的POST值。我可以将MenuItem显示为Checkboxes和Radio按钮, 但是当用户提交表单即POST时,ModelViewTest为null。我期待用户选择的MenuItem列表。
public class ModelViewTest
{
public IEnumerable<MenuItem> MenuItemList { get; set; } //Will be displayed as listboxes and checkboxes
public Restaurant restaurant {get;set;}
}
行动:
public ActionResult Edit()
{
//some code here
}
return View(new ModelViewTest());
}
[HttpPost]
public ActionResult Edit(ModelViewTest model)
{
//I'm not getting List of MenuItems
return View();
}
MenuItem类:
public class MenuItem
{
public string MenuItemCode{get;set;}
public string MenuItemDescription{get;set;}
public string UIType {get;set;} //This determines whether it's radio or checkbox
public string UIGroupType {get;set;} //Determines the Group for radio/checkbox.
}
public class Restaurant
{
public string restaurantName{get;set;}
public MenuItem MenuItem{get;set;}
}
更新
请参阅下面的观看代码段:
<table>
@foreach (var menu in Model.MenuList)
{
if (menu.UIType == "Radio")
{
<tr>
<td align="left">
<input id="MenuCheckboxRadio" name="@Menus.UIGroup" value="@Menu.MenuItemCode" type="radio" />
<label>@Menu.MenuItemDescription</label>
</td>
</tr>
}
else
{
<tr>
<td align="left">
<input id="MenuCheckbox" name="@Menus.UIGroup" value="@Menus.@MenuItem" type="checkbox" />
<label>@Menu.MenuItemDescription</label>
</td>
</tr>
}
i++;
}
</table>
答案 0 :(得分:2)
为了获取POST操作中的菜单项列表,您需要将相应的值包含在html <form>
中,因为这是一个集合,请遵循standard naming convention以便默认模型binder可以解析它们。
答案 1 :(得分:1)
首先,您应该向我们展示您了解如何呈现ViewModel的视图。 不过试试这个:
将部分视图设为您的MenyItem
<%@ Control Inherits="ViewUserControl<MenyItem>" %>
<%: Html.TextBoxFor(m => m.MenuItemCode) %>
<%: Html.TextBoxFor(m => m.MenuItemDescription) %>
.......
然后在你的视图中make for loop not foreach:
<%@ Page Inherits="ViewPage<ModelViewTest>" %>
<% using (Html.BeginForm()) {%>
<% for (int i = 0; i < 3; i++) { %>
<%: Html.EditorFor(m => m.MenuItemList[i]) %>
<% } %>
<% } %>
请参阅此answer
答案 2 :(得分:0)
请参阅下面的观看代码段:
<table>
@foreach (var menu in Model.MenuList)
{
if (menu.UIType == "Radio")
{
<tr>
<td align="left">
<input id="MenuCheckboxRadio" name="@Menus.UIGroup" value="@Menu.MenuItemCode" type="radio" />
<label>@Menu.MenuItemDescription</label>
</td>
</tr>
}
else
{
<tr>
<td align="left">
<input id="MenuCheckbox" name="@Menus.UIGroup" value="@Menus.@MenuItem" type="checkbox" />
<label>@Menu.MenuItemDescription</label>
</td>
</tr>
}
i++;
}
</table>