我在遇到子属性时遇到了默认的模型绑定命名约定。例如:MVC模型绑定命名约定的子对象?
我有一个视图模型看起来是这样的:
public class UserViewModel
{
public User BusinessObject { get; set; }
}
我的User类有一个名为 “NetworkLogin”
我的视图具有这样的特性: <%: Html.LabelFor(model => model.BusinessObject.NetworkLogin)%> <%:Html.TextBoxFor(model => model.BusinessObject.NetworkLogin)%> 自动填充
而且我的控制,我想干什么,是
[HttpGet]
public ActionResult UserIndex(string networkLogin) { }
问题: 输入参数“networkLogin”总是空。这是有道理的,因为html元素上的实际参数是name =“BusinessObject.NetworkLogin”和id =“BusinessObject_NetworkLogin”。但是,我不知道在我的操作方法中应该使用什么参数名称。我试过“businessObject_NetworkLogin”,它也不起作用。
但是,我有这种解决方法可以工作,但我不喜欢它。我添加到我的ViewModel:
public string NetworkLogin
{
get
{
if (BusinessObject == null)
BusinessObject = new User();
return BusinessObject.NetworkLogin;
}
set
{
if (BusinessObject == null)
BusinessObject = new User();
BusinessObject.NetworkLogin = value;
}
}
而我的查看页面现在说这个。 <%:Html.TextBoxFor(model => model.NetworkLogin)%>
有人能告诉我默认的模型绑定是什么适当的命名约定,所以我不必采用上述解决方法?
谢谢!
这看起来应该可以工作,但我决定使用一些ajax调用,所以我不愿意让我的项目准备好尝试以上。 – Raymond 2011-06-09 21:58:37
Darin的+1看起来像一个很好的答案。雷蒙德,你至少可以做的就是在旧版本上试试这个。 – 2011-08-03 11:53:51