DisplayFormat
Display
かみそりの拡張メソッドのいずれかで MVC によってのみ使用されます。( などDisplayFor
)残念ながら、やりたいことを行うには、「手動で」コードを作成する必要があります...次の例を参考にしてください。これは基本的に TextBoxFor コードを再現しますが、本番環境ではおそらく良くない仮定をいくつか行っています。以下の割り当てに注意してください。ここで、実際に your に設定された you をdisplayText
気にします。DisplayFormatString
DisplayFormat
あなたの見解でそれを呼び出すには@Html.TextEditorFor(m => m.Value)
public static class CustomEditorFor
{
public static IHtmlString TextEditorFor<TModel, TProperty>(this HtmlHelper<TModel> helper, Expression<Func<TModel, TProperty>> expression, object htmlAttributes)
{
return TextEditorFor(helper, expression, HtmlHelper.AnonymousObjectToHtmlAttributes(htmlAttributes));
}
public static IHtmlString TextEditorFor<TModel, TProperty>(this HtmlHelper<TModel> helper, Expression<Func<TModel, TProperty>> expression, IDictionary<string, object> htmlAttributes)
{
ModelMetadata metadata = ModelMetadata.FromLambdaExpression(expression, helper.ViewData);
object value = metadata.Model;
string displayText = string.Format(metadata.DisplayFormatString, value);
string fullName = helper.ViewContext.ViewData.TemplateInfo.GetFullHtmlFieldName(ExpressionHelper.GetExpressionText(expression));
TagBuilder tagBuilder = new TagBuilder("input");
tagBuilder.MergeAttributes(htmlAttributes);
tagBuilder.MergeAttribute("type", "text");
tagBuilder.MergeAttribute("name", fullName, true);
tagBuilder.MergeAttribute("value", displayText);
tagBuilder.GenerateId(fullName);
ModelState modelState;
if (helper.ViewData.ModelState.TryGetValue(fullName, out modelState))
{
if (modelState.Errors.Count > 0)
{
tagBuilder.AddCssClass(HtmlHelper.ValidationInputCssClassName);
}
}
tagBuilder.MergeAttributes(helper.GetUnobtrusiveValidationAttributes(ExpressionHelper.GetExpressionText(expression), metadata));
return new HtmlString(tagBuilder.ToString(TagRenderMode.SelfClosing));
}
}