1

私は使用しています:@Html.TextBoxFor(m => m.UserName)。これは私に与えます:

<input data-val="true" 
       data-val-required="The User name field is required." 
       id="UserName" name="UserName" type="text" value="xxx">

私が望むのは、これが次の<input>ようなものを生成することです:

<input class="login1" name="UserName" 
       placeholder="Username (or guest)" required size="25" type="text">

TextBoxFor をカスタマイズして、プレースホルダー、必須、およびサイズを追加する方法はありますか?

4

4 に答える 4

3

はい、別のパラメータを追加する必要があります

@Html.TextBoxFor(m => m.UserName, new { placeholder="Username (or guest", ...}

参照:特別な html 属性を持つ Html ヘルパー

于 2013-10-18T16:36:22.680 に答える
2

独自のヘルパーを作成できます。

public static class CustomHelpers
{
    public static MvcHtmlString CustomTexBoxFor<TModel, TProp>(this HtmlHelper<TModel> helper, Expression<Func<TModel, TProp>> expression, object htmlAttributes)
    {
        ModelMetadata metadata = ModelMetadata.FromLambdaExpression(expression, helper.ViewData);
        string name = ExpressionHelper.GetExpressionText(expression);

        TagBuilder tagBuilder = new TagBuilder("input");
        tagBuilder.MergeAttribute("name", name);
        tagBuilder.MergeAttribute("value", metadata.Model.ToString());
        tagBuilder.MergeAttribute("placeholder", "Username (or guest)");
        ... other attributes and htmlAttribute parameters

        return MvcHtmlString.Create(tagBuilder.ToString(TagRenderMode.SelfClosing));
    }
}
于 2013-10-18T17:03:25.790 に答える
1

モデルの検証を削除して data-val-required 属性を削除し、以下に示すようないくつかの html 属性を追加します。

@Html.TextBoxFor(m => m.UserName,new {placeholder="Username (or guest)", 
required = "required ",@size="25" })
于 2013-10-18T18:19:45.233 に答える
1

@Html.TextBox()検証関連の属性が必要ない場合は、 ;を使用する必要があると思います。

@Html.TextBox(Model.UserName.ToString(), Model.UserName, 
              new {@size ="25", @placeholder="Username (or guest)" ... })

@キーワード (@class など) をエスケープするためのプレフィックスとして使用されます。ただし、プレースホルダーとサイズには必要ない場合があります。

于 2013-10-18T16:41:12.130 に答える