У меня есть ASP. NET Базовое частичное представление, которое запрашивает (например) имя и фамилию человека. Частичное представление использует эту модель представления:
// MyApp.NamePartialViewModel.cs
public class NamePartialViewModel{
public string FirstName { get; set; }
public string LastName { get; set; }
}
Частичное представление отображает элементы ввода для своей модели представления, как показано здесь (очевидно, я опустил метки и ненавязчивый материал для проверки):
@* NamePartialView.cshtml *@
@model MyApp.NamePartialViewModel
<input asp-for="FirstName" />
<input asp-for="LastName>" />
Теперь на частичное представление ссылаются в родительском представлении. Ради достаточно полного примера я буду использовать частичное представление для получения имен двух разных людей, поэтому модель представления выглядит следующим образом:
// MyApp.MyViewModel.cs
public class MyViewModel {
public NamePartialViewModel FirstPersonName { get; set; }
public NamePartialViewModel SecondPersonName { get; set; }
}
И, наконец, родительское представление (отображается контроллером) выглядит следующим образом:
@model MyApp.MyViewModel
<form method="post">
<partial name="NamePartialView" model="@Model.FirstPersonName" />
<partial name="NamePartialView" model="@Model.SecondPersonName" />
</form>
Дело в том, что каждый элемент <partial>
передает экземпляр NamePartialViewModel
в частичное представление.
Мой вопрос: Есть ли способ, в частичном представлении (или в коде, вызываемом из частичного представления), получить имя свойства, связанного с моделью? Другими словами, я хочу обнаружить это (в этом примере) моя модель привязана к свойству с именем FirstPersonName или SecondPersonName (то есть именем свойства в модели родительского представления).
Итак, зачем вам это нужно, спросите вы? Потому что для правильной работы привязки модели в процедуре POST контроллера мне нужно добавить к имени свойства префикс атрибута <input>
элемента *1021*, поэтому первый частичный вызов представления фактически отобразит что-то вроде этого:
<input name="FirstPersonName.FirstName" id="FirstPersonName_FirstName" />
<input name="FirstPersonName.LastName" id="FirstPersonName_LastName" />
, поэтому мне нужен код, который может изготовить префикс на основе имени свойства в модели родительского представления , которое становится моделью представления для частичного представления.