【发布时间】:2013-03-27 08:43:44
【问题描述】:
我有一个 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"。如何获得这个完全限定的名称?
【问题讨论】:
-
你使用的是 MVC3 还是 MVC4?
标签: asp.net-mvc asp.net-mvc-4 modelmetadata