【问题标题】:How to use built-in HTML helpers within a custom HTML helper?如何在自定义 HTML 帮助器中使用内置 HTML 帮助器?
【发布时间】:2015-09-30 17:16:33
【问题描述】:

我正在尝试在辅助剃须刀功能中使用 BeginForm,例如。

@helper Modal(string name)
{
<div id="@name">

    @using (Html.BeginForm("Add", "User", FormMethod.Post)) {
        <fieldset>
            @Html.Label("Name")
            @Html.TextBox("Name", new { @class = "text ui-widget-content ui-corner-all" })
            @Html.Label("Email")
            @Html.TextBox("Email", new { @class = "text ui-widget-content ui-corner-all" })

            <input type="submit" tabindex="-1" style="position:absolute; top:-1000px">
        </fieldset>
    }
</div>
}

但是我得到一个错误:

@MyHelper.Modal("dialog-form")

这是由于 Html... 标记,没有它显然仅适用于 html。

我缺少什么让它工作?

我添加了@using System.Web.Mvc.Html;,但它仍然无法识别FormMethod。

【问题讨论】:

    标签: asp.net-mvc razor html-helper html.beginform


    【解决方案1】:

    不幸的是,App_Code 文件夹中定义的声明性帮助程序似乎继承自 System.Web.WebPages.HelperPage 而不是普通 cshtml 文件继承自的 System.Web.Mvc.WebViewPage

    帮助页面似乎也有一个 Html 属性,但它是空的。

    但是,您似乎可以通过PageContext.Page 访问所有这些帮助程序。此外,您还需要添加一些 using 语句(位于 views 文件夹中的 web.config 中的所有命名空间),以便您可以访问重要的扩展方法,例如 Html.BeginForm

    这是一个示例演示代码:

    @using System.Web.Mvc
    @using System.Web.Mvc.Routing
    @using System.Web.Mvc.Html
    @using System.Web.Mvc.Ajax
    @using System.Web.Mvc.Razor
    @using System.Web.Optimization
    
    @helper MyCustomHelper()
    {
        var wvp = PageContext.Page as System.Web.Mvc.WebViewPage;
    
        var Html = wvp.Html;
        var Ajax = wvp.Ajax;
        var Url = wvp.Url;
        var ViewBag = wvp.ViewBag;
    
        // ... Helper code goes here ...
    
        @using (Html.BeginForm("Add", "User", FormMethod.Post))
    
        @Ajax.BeginForm ...
    
        @Url.Action ...
    
        // ...
    }
    

    希望这会有所帮助。

    【讨论】:

    • @Victor 表单标记不起作用,例如。 Html.BeginFrom、Ajax.BeginForm、Html.TextBox。我正在使用 Umbraco 7,但是标记在 umbraco 视图中工作正常,它不仅在帮助程序中工作。
    猜你喜欢
    • 2014-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-06
    • 2012-01-28
    • 2014-10-19
    • 2010-09-16
    相关资源
    最近更新 更多