我正在使用ASP.Net MVC 3和Razor
如何为以下结构创建自定义HTML帮助器。这应该绑定到模型属性,我也应该将参数传递给label,span,input。
以下任何代码示例标记?
<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; }
}
}
答案 0 :(得分: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)
希望这有帮助
答案 1 :(得分:0)
替换此
@Html.DisplayTextFor(m=>m.UserName)
用
@Html.LabelFor(m=>m.UserName)
有关 DisplayTextFor 的更多详情,请点击以下链接