asp.net mvc 不应该会自动匹配参加吗?
我 前台 要提交两个参数
<%=Html.CheckBox("menuId",o.Zdt_MenuRole.Count(m=>m.meanId==o.meanId)==0?false:true,new{@value=o.meanId})%>
后台
[HttpPost]
//[Description("添加菜单角色")]
public ActionResult Create(int [] menuId,int roleId)
{
.......................
}
后台参数也是 menuId
可是怎么提交就只能提交 roleId
menuId 是 null 的
这是怎么回事呢?
我想也有很多人遇到这种问题了吧
前台 参加 和 后台参加名称 是相同的 可就是 有部分 参加 明明是有值的却 为 null
怎么办?
把你的route贴出来 应该是你路由设置有问题吧
如下试试:
<% if (o.Zdt_MenuRole.Any(m => m.menuId == o.menuId)) { %>
<input name="menuID" type="checkbox" value="<%: o.menuId %>" checked="checked"/>
<% } else { %>
<input name="menuID" type="checkbox" value="<%: o.menuId %>"/>
<%} %>
Html.CheckBox 只能用来绑定布尔类型数据。
checkbox的name属性的值在modelbinding的时候才会与action的参数匹配,也许是这个问题
MVC模型绑定中数组类型的Name是有特定规则的,名称中应该包含下标,所以View中应该使用下面方式:
<%=Html.CheckBox("menuId[0]",o.Zdt_MenuRole.Count(m=>m.meanId==o.meanId)==0?false:true,new{@value=o.meanId})%>
如果后面还有,则名称依次为menuId[1]、menuId[2]...