【发布时间】:2011-06-07 18:47:09
【问题描述】:
当有子属性时,我在使用默认模型绑定命名约定时遇到问题。例如:
我有一个看起来像这样的 ViewModel:
public class UserViewModel
{
public User BusinessObject { get; set; }
}
我的用户类有一个名为“NetworkLogin”的属性
我的视图有这样的东西:
model.BusinessObject.NetworkLogin)%>
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;
}
}
我的视图页面现在改为这样。 model.NetworkLogin)%>
有人可以告诉我默认模型绑定的正确命名约定是什么,这样我就不必采用上述解决方法了吗?
谢谢!
【问题讨论】:
标签: asp.net asp.net-mvc-3 naming-conventions model-binding