我有以下表格:
@model proj.ViewModels.AddMenu
@using(Html.BeginForm())
{
@Html.AntiForgeryToken()
@Html.TextBoxFor(x=>x.Menu.MenuName)
@Html.TextBoxFor(x=>x.MenuItem.MenuItemName)
<input type="submit" />
}
这个ViewModel
public class AddMenu
{
public Menu Menu { get; set; }
public MenuItem MenuItem { get; set; }
}
菜单可以有一个MenuItem。当我提交表单时,我希望看到我的Addmenu模型已完成MenuName并且Addmenu.MenuItem.MenuItemName已完成。
然后我将我的菜单项添加到菜单中(因为菜单中有一个MenuItems集合)。
但AddMenu的Menu和MenuItem都返回null?
有人知道为什么会这样吗?
答案 0 :(得分:0)
所以我从来没有意识到,但模型只有在我单独传递时才会起作用:
public ActionResult Addmenu(Menu menu, MenuItem menuItem)
{
//Model is not null
}
答案 1 :(得分:0)
您遇到的问题是您正在尝试将文本框绑定到非字符串,日期,整数等类型.MVC并不完全知道如何处理Menu和MenuItem类。这些课程是什么?
您可能考虑的是创建一个具有两个字符串属性的视图模型,名为Menu和MenuItem。在这种情况下,您将在回发中填充数据,之后您可以执行您想要的操作(映射到其他对象等)。
This文章包含一个答案,如果您有兴趣阅读更多内容,这对我来说似乎非常完整。