我如何获得在EditorTemplate完全合格的成员的名字吗?(How do I get the

2019-08-18 01:17发布

我有一个ASP.NET MVC 4个网站,我路过一个嵌套的属性设置为一个EditorTemplate和使用建筑字段名ViewData.ModelMetadata.PropertyName然而,这得到了孩子的财产,不能充分点标记名称的属性名称我编辑的属性。

一个例子可以说明最好的:

鉴于以下几种类型

public class EditEntityViewModel
{
     // elided
     public Entity Entity { get; set}
}


public class Entity 
{
    // elided
    public string ImageUrl { get; set; }
}

我的编辑和创建的看法如下:

@model EditEntityViewModel

<div>
    @Html.EditorFor(model => model.Entity.ImageUrl , "_ImageUploader")
</div>

该_ImageUploader.cshtml编辑模板如下:

@model System.String

<div class="uploader">
    @Html.LabelFor(model => model)
    @Html.HiddenFor(model => model)
    <div data-rel="@(ViewData.ModelMetadata.PropertyName)">   
        <input type="file" name="@(ViewData.ModelMetadata.PropertyName)Upload" />
    </div>
</div>

渲染HTML看起来像这样

<div>
   <div class="uploader">
        <label for="Entity_ImageUrl">Image</label>
        <input id="Entity_ImageUrl" name="Entity.ImageUrl" type="hidden"/>
        <div data-rel="ImageUrl"> <!-- Problem -->
             <input type="file" name="ImageUrlUpload" /><!-- Problem -->
        </div>
    </div>
</div>

上线5和6,在那里我已经叫通知ViewData.ModelMetadata.PropertyName ,我只是让孩子属性名称"ImageUrl"但我想"Entity.ImageUrl" 。 如何获得获得这个全名?

Answer 1:

使用@Html.NameFor(model => model) / @Html.NameForModel()代替ViewData.ModelMetadata.PropertyName ,这种方法应该给你想要的名称。 它的一部分Mvc3Futures包,并加入到MVC4。



文章来源: How do I get the the fully qualified member name in an EditorTemplate?