2011-08-07 12 views
2

これはおそらく愚かな質問ですが、私が探しているものが見つかりません。HTMLコントロールのMVCヘルパーライブラリ

MVCヘルパーライブラリは、フォームタイプのコントロール専用です。例えば

、私のようなラベルのためのHTMLを達成したい:残念ながらヘルパーに建てられたが、あなたがラベルに何も指定することはできません

<label class="form-label-left required" for="message">Message: <span>*</span></label> 

。 (私の知る限り承知しているとして)

他の例としては、入力タイプを指定することができることされていますから、

<input type="email" name="EmailAddress" /> 

そして、このようななど「TEL」、「範囲」、「番号」、などの他のタイプをHTML5。

このようなことをより詳細に制御できるライブラリがありますか、それとも自分のヘルパーを書く方が良いですか?

更新:

私は朝ブリュのための私のRSSフィードにこれを見つけました。

http://www.codeproject.com/KB/webforms/Html5MVCWebControls.aspx

HTML5を制御するためのライブラリ。 MVC用のカスタマイズ可能なライブラリやHTML5ライブラリがないようです。

答えて

0

ASP.NET MVCのソースコードを参照して、カスタムヘルパーを作成してください。必要な標識付きラベルの例を以下に示します。

public MvcHtmlString CustomLabelFor<TModel, TProperty>(this HtmlHelper<TModel> helper, Expression<Func<TModel, TProperty>> expression) 
{ 
    var metadata = ModelMetadata.FromLambdaExpression(expression, helper.ViewData); 
    string htmlFieldName = ExpressionHelper.GetExpressionText(expression); 

    string resolvedLabelText = metadata.DisplayName ?? metadata.PropertyName ?? htmlFieldName.Split('.').Last(); 
    if (String.IsNullOrEmpty(resolvedLabelText)) 
    { 
     return MvcHtmlString.Empty; 
    } 

    if (metadata.IsRequired) 
    { 
     var spanTag = new TagBuilder("span"); 
     spanTag.AddCssClass("required-star"); 
     spanTag.InnerHtml = "*"; 

     resolvedLabelText = string.Concat(resolvedLabelText, spanTag.ToString(TagRenderMode.Normal)); 
    } 

    var tag = new TagBuilder("label"); 
    tag.Attributes.Add("for", TagBuilder.CreateSanitizedId(helper.ViewContext.ViewData.TemplateInfo.GetFullHtmlFieldName(htmlFieldName))); 
    tag.InnerHtml = resolvedLabelText; 
    tag.AddCssClass("text_label"); 

    return MvcHtmlString.Create(tag.ToString(TagRenderMode.Normal)); 
} 
+0

私は実際に似たようなことを書いていましたが、メタデータを使用して必要な場合にはそれを使用することはありませんでした。カッコいい。私はすべてのこれらのもののための自分のlibを作成する価値があるのだろうか、またはすでにこのようなものをたくさんするlibsがあるので、私は新しいタイプのホイールを作成していない。 – Phill

+0

@Phill第三者図書館がたくさんあります。例:[MVC Contrib](http://mvccontrib.codeplex.com/)、[Telerik](http://www.telerik.com/products/aspnet-mvc.aspx)私はいくつかの簡単な仕事のために自分自身を書く傾向があります。 – Eranga

+0

私は昨日それを見ていたときにMVC Contribが何だったのか分かりませんでした。すべてをやりたいと思っています。 Telerik私はまったく触れていない、彼らのWeb Formコントロールはひどいものだった。 – Phill