У меня есть несколько таблиц с адресными полями в моей базе данных. бывший:
Человек: имя, адрес, адрес1, идентификатор города, идентификатор штата, идентификатор страны, пин-код, ..
Компания: имя, адрес, адрес1, идентификатор города, идентификатор штата, идентификатор страны, пин-код, ..
..
Соответствующие модели просмотра:
public class customermodel{
public PersonModel basicInfo {get;set;}
public string type {get;set;}
public long id {get;set;}
...
}
public class PersonModel{
public string FirstName {get;set;}
public string MiddleName {get;set;}
public string LastName {get;set;}
public string Email {get;set;}
public long Phone {get;set;}
public string address {get;set;}
public string address1 {get;set;}
public long cityid {get;set;}
public long stateid {get;set;}
public long countryid{get;set;}
public long pincode {get;set;}
}
Я создал класс для адреса:
public class AddressModel{
public string address {get;set;}
public string address1 {get;set;}
public long cityid {get;set;}
public long stateid {get;set;}
public long countryid{get;set;}
public long pincode {get;set;}
}
(ПРИМЕЧАНИЕ: я не использовал AddressModel в модели лица, чтобы автомаппер мог получить все данные)
и шаблон редактора для того же в /Views/Shared/EditorTemplates/AddressModel.ascx
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<AddressModel>" %>
<%: Html.TextBoxFor(model => model.address, new { Placeholder = "Country" })%>
<%: Html.TextBoxFor(model => model.address1, new { Placeholder = "State", style="display:none;" })%>
...
В моем представлении EditCustomer я хочу вызвать шаблон редактора для модели адреса.
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<CustomerModel>" %>
<%: Html.TextBoxFor(model => model.id) %>
<%: Html.TextBoxFor(model => model.type) %>
<%: Html.EditorFor(model => (AddressModel)AutoMapper.Mapper.DynamicMap<AddressModel>(model.personModel), "AddressModel")%>
...
Теперь я получаю следующую ошибку для строки EditorFor
:
Шаблоны можно использовать только с доступом к полям, доступом к свойствам, индексом одномерного массива или выражениями пользовательского индексатора с одним параметром.
Я хочу использовать Html.EditorForModel("AddressModel");
, но это выдает ошибку
"System.InvalidOperationException: элемент модели, переданный в словарь, имеет тип "CustomerModel", но для этого словаря требуется элемент модели типа " AddressModel'".
В этом случае я не знаю, как передать модель адреса, сгенерированную автоматическим сопоставлением, в шаблон редактора.
Я не могу использовать partialViews, потому что я хочу, чтобы поля адреса имели префикс basicInfo в этом случае, и мне не нужен префикс в другом случае.
Это сводит меня с ума уже пару дней. Пожалуйста помоги!!!