Контекст: мне нужно повторно использовать частичный вид бритвы с двумя моделями, как показано ниже
public class Address
{
public string CountryName { get; set; }
public string CityName { get; set; }
public string StreetName { get; set; }
public string PostalCode { get; set; }
public string StreetNumber { get; set; }
}
public class Customer
{
public string FirstName { get; set; }
public string LastName { get; set; }
public Address Address { get; set; }
}
Вид должен выглядеть следующим образом: нет формы * тега 1005 *, нет кнопки отправки, только элементы управления, привязанные к модели
@Html.LabelFor(m => m.CountryName)
@Html.TextBoxFor(m => m.CountryName)
Сложность заключается в том, что представление должно быть вставлено как форма редактирования адреса, а также как часть любой другой формы. Результат отправляется на разные действия с разными моделями. Когда это просто форма редактирования адреса, проблем нет, элементы управления привязаны к свойствам класса Address, и все работает хорошо.
Проблема возникает, когда я пытаюсь использовать ее в другой форме, где Адрес является свойством модели, а не самой модели (Заказчик). Я не могу просто указать поле Address в качестве модели для этого представления, потому что действие ожидает Customer.Address, но элементы управления привязаны к свойствам без упоминания Customer
Вот в чем разница в HTML
<!-- Edit Address -->
<label for="CountryName_input">Country</label>
<input id="CountryName_input" name="CountryName" type="text" value="">
<!-- Edit Customer -->
<label for="Address_CountryName_input">Country</label>
<input id="Address_CountryName_input" name="Address.CountryName" type="text" value="">
Есть ли способ использовать это представление в обоих случаях? Я начал исследовать помощника HTML, который занял бы
Expression<Func<TModel, string>> selector
, но безуспешно до сих пор.
Кто-нибудь может мне помочь?