如何在.cs文件中调用@ Html.TextBoxFor

时间:2014-01-13 20:22:34

标签: c# asp.net .net asp.net-mvc

我正在为一个视图中的每个文本框中的一个项目工作,我已经完成了

<div class="field-box">
    <label>Titlu</label>
    <div class="col-md-7">
        @Html.TextBoxFor(model => model.Name, new { @class = "form-control inline-input" })
    </div>
    @Html.ValidationMessageFor(model => model.Name)
</div>

我想写一个自定义帮助器,它会为我输出,但我不知道当我不在视图中时如何调用@ Html.TextBoxFor。

非常感谢任何帮助。 感谢

更新 我找到了这个Using HtmlHelper in a Controller,但看起来很糟糕,必须有一个更好的方法

4 个答案:

答案 0 :(得分:6)

像这样:

public static class CustomHtmlHelper {

    public static MvcHtmlString MyFieldBox<TModel, TProperty>(this HtmlHelper<TModel> html, Expression<Func<TModel, TProperty>> expression, String title) {

        StringBuilder sb = new StringBuilder();
        sb.AppendLine("<div class=\"field-box\">");
        sb.AppendLine("<div class=\"field-box">\");
        sb.AppendLine("<label>{0}</label>", title);
        sb.AppendLine("<div class=\"col-md-7\">");
        sb.AppendLine( htmlHelper.TextBoxFor( expression, new { @class = "form-control inline-input" }) );
        sb.AppendLine("</div>");
        sb.AppendLine( htmlHelper.ValidationMessageFor( expression );
        sb.AppendLine("</div>");
        return new MvcHtmlString( sb.ToString() );
    }

}

用法:

<%= Html.MyFieldBox( m => m.Name, "Name" ) %>

答案 1 :(得分:1)

如果仅在一个视图中使用它,则使用razor htmlhelper语法。

您可以像这样定义帮助器:

@helper MyTextBoxFor(System.Linq.Expressions.Expression<Func<ViewModelType, object>> expression )
{
    <div class="field-box">
        <label>Titlu</label>
        <div class="col-md-7">
            @Html.TextBoxFor(expression, new { @class = "form-control inline-input" })
        </div>
        @Html.ValidationMessageFor(expression)
    </div>
}

然后像这样使用它:

@MyTextBoxFor(m => m.Name)

答案 2 :(得分:0)

http://msdn.microsoft.com/en-us/library/system.web.mvc.htmlhelper%28v=vs.118%29.aspx

但是,如上所述,

  

HtmlHelper类旨在生成UI。它不应该用在控制器或模型中。

答案 3 :(得分:0)

如果适用于您,可以尝试使用编辑器模板