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"
。この完全修飾名を取得するにはどうすればよいですか?