如何在自定义 HTML 帮助器中使用内置 HTML 帮助器?
How to use built-in HTML helpers within a custom HTML helper?
我正在尝试在辅助剃刀函数中使用 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。
不幸的是,在 App_Code
文件夹中定义的声明性助手似乎继承自 System.Web.WebPages.HelperPage
而不是 System.Web.Mvc.WebViewPage
,普通 cshtml 文件继承自
。
helper page好像也有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 ...
// ...
}
希望这对您有所帮助。
我正在尝试在辅助剃刀函数中使用 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。
不幸的是,在 App_Code
文件夹中定义的声明性助手似乎继承自 System.Web.WebPages.HelperPage
而不是 System.Web.Mvc.WebViewPage
,普通 cshtml 文件继承自
helper page好像也有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 ...
// ...
}
希望这对您有所帮助。