2013-10-18 38 views
1

我正在使用:@Html.TextBoxFor(m => m.UserName)。這給了我:有沒有一種方法可以自定義由@ 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添加佔位符,需要和大小?

回答

1

如果您不需要驗證相關的屬性,我認爲你必須使用一個@Html.TextBox();

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

@被用作轉義關鍵詞(如@class)的前綴。儘管你可能不需要佔位符和大小。

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)); 
    } 
} 
1

刪除模型驗證刪除數據-VAL要求的屬性,並添加一些HTML屬性,如下面給出。

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