У меня есть частичное представление ASP.NET Core, которое запрашивает (например) имя и фамилию человека. Частичное представление использует эту модель представления:
// 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 контроллера работала правильно, мне нужно добавить к атрибуту name
элемента <input>
префикс имени свойства, чтобы первый частичный вызов представления фактически отображал что-то вроде этого:
<input name="FirstPersonName.FirstName" id="FirstPersonName_FirstName" />
<input name="FirstPersonName.LastName" id="FirstPersonName_LastName" />
поэтому мне нужен код, который может создать префикс на основе имени свойства в родительской модели представления, которое становится моделью представления для частичного представления.