当存在子属性时,我在默认模型绑定命名约定方面遇到问题。例如:
我有一个 ViewModel,看起来像这样:
public class UserViewModel
{
public User BusinessObject { get; set; }
}
我的 User 类有一个名为“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)%>
有人可以告诉我默认模型绑定的正确命名约定是什么,这样我就不必采用上述解决方法吗?
谢谢你!