2014-02-13 3 views
1

У меня есть несколько таблиц, которые имеют адресные поля в моей базе данных. например:передать модель, сгенерированную с помощью automapper, в Html.editorformodel()

Person: имя, адрес, address1, CityId, stateid, CountryId, пин-код, ..
Компания: название, адрес, address1, CityId, stateid, CountryId, пин-код, ..
. .

Соответствующие ViewModels:

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 в personmodel так что automapper может тянуть все данные)

и editortemplate за то же самое в /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».
Я не знаю, как передать automapper сгенерированную адресную модель на editortemplate в этом случае.

Я не могу использовать partialViews, потому что в этом случае поля адреса должны иметь префикс basicInfo, и мне не нужен префикс в другом случае.

Это сводит меня с ума на пару дней. Пожалуйста помоги!!!

ответ

 Смежные вопросы

  • Нет связанных вопросов^_^