将使用自动映射器生成的模型传递给Html.editorformodel()

恶魔

我有多个表,这些表在我的数据库中都有地址字段。前任:

人员:姓名,地址,地址1,cityid,stateid,countryid,pincode等..
公司:姓名,地址,地址1,stateid,cityid,stateid,countryid,pincode等..
..

相关视图模型:

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可以提取所有数据)

和在/Views/Shared/EditorTemplates/AddressModel.ascx中的相同的editortemplate

<%@ 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'的模型项”。
在这种情况下,我不知道如何将自动映射器生成的地址模型传递给editortemplate。

我不能使用partialViews,因为在这种情况下我希望地址字段以basicInfo为前缀,而在另一种情况下则不需要任何前缀。

这让我发疯了几天。请帮忙!!!

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

了解自动映射器

来自分类Dev

如何使用自动映射器跳过对象

来自分类Dev

使用自动映射器从HttpPostedFileBase映射到Byte []

来自分类Dev

自动映射器-使用集合映射对象

来自分类Dev

EditorForModel在视图上不显示任何内容

来自分类Dev

将不同的参数传递给每个映射器

来自分类Dev

自动映射器:将参数传递给Map方法

来自分类Dev

使用自动映射器自定义解析

来自分类Dev

在ITypeConverter中使用自动映射器

来自分类Dev

使用自动映射器仅更新几个属性

来自分类Dev

自动映射器性能

来自分类Dev

使用自动映射器映射多级嵌套对象

来自分类Dev

使用自动映射器映射对象的问题

来自分类Dev

自动映射器-使用IEnumerable <anotherType>映射对象

来自分类Dev

自动映射器将ForMember作为参数传递

来自分类Dev

EditorForModel无法与ICollection MVC 4一起使用

来自分类Dev

自动映射器异常

来自分类Dev

MVC Bootstrap编辑器模板为Html.Editorformodel()添加两个标签

来自分类Dev

使用EditorForModel进行条件必需的数据注释

来自分类Dev

将使用paste()生成的字符传递给mtext()

来自分类Dev

使用自动映射器将加入的域模型映射到视图模型

来自分类Dev

如何在LINQ上正确使用模型映射器?

来自分类Dev

在自动映射器选项中传递多个对象

来自分类Dev

使用自动映射器映射对象列表

来自分类Dev

使用 EditorForModel 从视图返回数据到控制器

来自分类Dev

将使用 Javascript 生成的列表传递给 Spring 控制器

来自分类Dev

使用自动映射器映射列表数组

来自分类Dev

MVC .Net Core Entity Framework 如何通过 Ajax 传递 EditorForModel 表单数据

来自分类Dev

将创建的对象实例传递给映射器

Related 相关文章

热门标签

归档