1

idモデルのプロパティを変更する必要があるので、からidメソッドに新しいものを割り当てますか。しかし、これは明らかに、からのメソッドを使用するときに属性のを変更しませんでした。TextBoxForHTML helperidforLabelForHTML helper

@Html.TextBoxFor(model => model.MyProperty, new { id = "CustomId" })

からforメソッドを使用するときに属性を変更するにはどうすればよいですか?このメソッドでは属性を変更できないためです。LabelForHTML helper

@Html.LabelFor(model => model.MyProperty)

idおそらく、モデルプロパティにを変更する属性があります。

ありがとう

コメントのために編集

LabelForから名前を取得する必要があるため、使用します。DataAnnotation Description

[Display(Name = "Name of my property")]
public string MyProperty { get; set; }
4

2 に答える 2

5

ViewModel:

public IEnumerable<SportingLisbon> SportingLisbonList { get; set; }

意見:

 @Html.LabelFor(model => model.SportingLisbonList, new { @for = "IdSportingLisbon" })

ブラウザ:
<label for="IdSportingLisbon" >スポルティングリスボン</label>

説明:LabelForに
のfor属性を設定します。


新しい{ @for="IdSportingLisbon" }
ブラウザなし:
<label for = "SportingLisbonList" >SportingLisbon </ label>


web.config:
<compilation debug="true" targetFramework="4.5" />

<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" />


于 2014-07-31T14:09:22.123 に答える
1

そのために独自の拡張機能を作成する必要があると思います。html属性を使用する拡張機能を作成しました。これを使用して問題を解決できる可能性があります。

public static MvcHtmlString LabelFor<TModel, TValue>(this HtmlHelper<TModel> html, Expression<Func<TModel, TValue>> expression, Object htmlAttributes) {
    ModelMetadata metadata = ModelMetadata.FromLambdaExpression<TModel, TValue>(expression, html.ViewData);
    String fieldname = ExpressionHelper.GetExpressionText(expression);

    fieldname = metadata.DisplayName ?? metadata.PropertyName ?? fieldname.Split(new Char[] { '.' }).Last<String>();
    if (String.IsNullOrEmpty(fieldname)) {
        return MvcHtmlString.Empty;
    }
    TagBuilder tagBuilder = new TagBuilder("label");
    tagBuilder.Attributes.Add("for", TagBuilder.CreateSanitizedId(html.ViewContext.ViewData.TemplateInfo.GetFullHtmlFieldName(fieldname)));
    tagBuilder.SetInnerText(fieldname);
    RouteValueDictionary attr = HtmlHelper.AnonymousObjectToHtmlAttributes(htmlAttributes);
    tagBuilder.MergeAttributes<String, Object>(attr);
    return tagBuilder.ToMvcHtmlString();
}
于 2012-08-01T13:10:42.847 に答える