Asp.net mvc 有没有办法自定义@Html.TextBoxFor(m=>;m.UserName)生成的内容

Asp.net mvc 有没有办法自定义@Html.TextBoxFor(m=>;m.UserName)生成的内容,asp.net-mvc,asp.net-mvc-5,Asp.net Mvc,Asp.net Mvc 5,我正在使用:@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 class="login1" name="User

我正在使用:
@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 class="login1" name="UserName" 
       placeholder="Username (or guest)" required size="25" type="text">


有没有办法自定义TextBoxFor以添加占位符、必填项和大小?

是的,您需要添加另一个参数

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

另请参见:

是,您需要添加另一个参数

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

另请参见:

如果您不需要与验证相关的属性,我认为您必须使用
@Html.TextBox()


@
用作转义关键字(如@class)的前缀。您可能不需要它作为占位符和大小。

如果您不需要与验证相关的属性,我认为您必须使用
@Html.TextBox()


@
用作转义关键字(如@class)的前缀。您可能不需要它作为占位符和大小。

您可以编写自己的帮助程序:

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));
    }
}
公共静态类CustomHelpers
{
公共静态MvcHtmlString CustomTexBoxFor(此HtmlHelper、表达式、对象htmlAttributes)
{
ModelMetadata=ModelMetadata.FromLambdaExpression(表达式,helper.ViewData);
字符串名称=ExpressionHelper.GetExpressionText(表达式);
TagBuilder TagBuilder=新的TagBuilder(“输入”);
tagBuilder.MergeAttribute(“名称”,名称);
tagBuilder.MergeAttribute(“value”,metadata.Model.ToString());
tagBuilder.MergeAttribute(“占位符”、“用户名(或来宾)”);
…其他属性和htmlAttribute参数
返回MvcHtmlString.Create(tagBuilder.ToString(TagRenderMode.SelfClosing));
}
}

您可以编写自己的帮助程序:

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));
    }
}
公共静态类CustomHelpers
{
公共静态MvcHtmlString CustomTexBoxFor(此HtmlHelper、表达式、对象htmlAttributes)
{
ModelMetadata=ModelMetadata.FromLambdaExpression(表达式,helper.ViewData);
字符串名称=ExpressionHelper.GetExpressionText(表达式);
TagBuilder TagBuilder=新的TagBuilder(“输入”);
tagBuilder.MergeAttribute(“名称”,名称);
tagBuilder.MergeAttribute(“value”,metadata.Model.ToString());
tagBuilder.MergeAttribute(“占位符”、“用户名(或来宾)”);
…其他属性和htmlAttribute参数
返回MvcHtmlString.Create(tagBuilder.ToString(TagRenderMode.SelfClosing));
}
}

删除模型验证以删除数据val required属性并添加一些html属性,如下所示

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

Remove model validation以删除数据val required属性,并添加一些html属性,如下所示

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