2

ASP.NetMVC3とRazorを使用しています

以下の構造のカスタムHTMLヘルパーを作成するにはどうすればよいですか。これはモデルプロパティにバインドする必要があります。また、ラベル、スパン、入力にパラメータを渡す必要があります。

以下のマークアップのコードサンプルはありますか?

    <label class="field">
       <span class="td">User Name</span>
       <input type="text" name="UserName" class="highlight">
    </label>

アップデート:

以下を試しましたが、モデルで使用したテキストを表示しないためにテキストを表示します

   <label for="login_field">
      <span class="td"> @Html.DisplayTextFor(m=>m.UserName)</span>
        @Html.TextBoxFor(model => model.UserName, 
           new { style = "width:21em", @class = "text" })

   </label>

私のビューモデルは以下のとおりで、リソースファイルを使用してテキストをフェッチします

 using System;
using System.Collections.Generic;
using System.Linq;
using System.ComponentModel.DataAnnotations;
using System.Globalization;
using System.Web.Mvc;
using System.Web;

namespace MVC.ViewModel
{
    public class LoginViewModel
    { 
        [Required]
        [Display(Name = "UserName", ResourceType = typeof(Resources.Global))]
        public string UserName { get; set; }

    }
}
4

2 に答える 2

1

ヘルパーを呼び出す関数を作成することをお勧めします。これはあなたにあなたを実装する方法のヒントを与えるはずです

@functions
{
public HelperResult CustomFormTextboxFor<TModel,TProperty>(HtmlHelper<TModel> html, Expression<Func<TModel, TProperty>> expression)
{
    var textBox= html.TextBoxFor(expression, new {@class = "highlight"});
    var modelsMetaDatas = ModelMetadata.FromLambdaExpression(expression, html.ViewData);
    string displayValue = modelsMetaDatas.DisplayName ?? (metaData.PropertyName ??   ExpressionHelper.GetExpressionText(expression));
    return RenderCustomControl(textBox, displayValue);
}
}

@helper RenderCustomFormTextbox(MvcHtmlString input, string labeltext)
{
   <label class="field">
       <span class="td">@labeltext</span>
       @input
    </label> 
}

ビュー内の関数の呼び出しは次のようになります。

@CustomFormTextboxFor(Html, model => model.FirstName)

お役に立てれば

于 2012-12-23T09:08:57.900 に答える
0

これを交換してください

@Html.DisplayTextFor(m=>m.UserName)

@Html.LabelFor(m=>m.UserName)

DisplayTextForの詳細については、以下のリンクをたどってください

Html.DisplayTextFor()のポイントは何ですか?

于 2012-12-23T09:56:02.123 に答える