У меня проблемы с соглашением об именовании моделей по умолчанию, когда есть дочернее свойство. Например:
У меня есть ViewModel, которая выглядит примерно так:
public class UserViewModel
{
public User BusinessObject { get; set; }
}
В классе «Мой пользователь» есть свойство «NetworkLogin»
My View имеет что-то вроде этого:
<%: 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)%>
Может кто-нибудь сказать мне, каково правильное соглашение об именах для привязки модели по умолчанию, чтобы мне не приходилось использовать вышеуказанный обходной путь?
Спасибо!