我有多個在我的數據庫中有地址字段的表。 例如:將使用automapper生成的模型傳遞給Html.editorformodel()
人:姓名,地址,地址1,cityid,STATEID,countryid,PIN碼,...
公司:名稱,地址,地址1,cityid,STATEID,countryid,PIN碼,...
。 。
相關的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;}
}
(注:我沒有personmodel使用AddressModel使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生成的addressmodel傳遞給editortemplate在這種情況下。
我不能使用partialViews,因爲我希望在這種情況下地址字段的前綴是basicInfo,而在另一種情況下我不需要任何前綴。
這讓我瘋狂了幾天。請幫忙!!!
它的工作!我把PersonModel改成了'public string LastName {get; set;} public string Email {get; set;} public long Phone {get; set;} public AddressModel addressModel {get; set;}' – EvilDevil