加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – 如何在EditorTemplate中获取完全限定的成员名称

发布时间:2020-12-16 07:24:19 所属栏目:asp.Net 来源:网络整理
导读:我有一个ASP.NET MVC 4站点,我将一个嵌套属性传递给EditorTemplate并使用ViewData.ModelMetadata.PropertyName构建字段名称,但是,这将获取子属性的属性名称,而不是完整的点符号名称我正在编辑的属性. 一个例子将说明最佳: 鉴于以下类型 public class EditEn
我有一个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”.如何获得这个完全限定的名称?

解决方法

使用@ Html.NameFor(model => model)/ @ Html.NameForModel()而不是ViewData.ModelMetadata.PropertyName,此方法应该为您提供所需的名称.它是 Mvc3Futures软件包的一部分,并被添加到MVC4中.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读