2

我正在使用 ASP.Net MVC 3 和 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 回答