У меня есть сайт ASP.NET MVC 4, и я передаю вложенное свойство в EditorTemplate и создаю имя поля, используя ViewData.ModelMetadata.PropertyName
, однако это получает имя свойства дочернего свойства, а не полное имя точечного имени свойства Я редактирую.Как получить полное имя участника в EditorTemplate?
Пример иллюстрирует лучше:
Учитывая следующие типы
public class EditEntityViewModel
{
// elided
public Entity Entity { get; set}
}
public class Entity
{
// elided
public string ImageUrl { get; set; }
}
My Edit и создать взгляды следующим образом:
@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? – nemesv