Tra*_*s J 3 c# html-helper razor asp.net-mvc-3
因此,我试图将.cshtml视图中的此剃刀语法转换为.cs中的帮助程序扩展名。Darin在此发表了一篇很棒的文章:https : //stackoverflow.com/a/8187441/1026459。但是,我在使其工作时遇到了一些问题。
这是简单的标记
@using (Html.BeginForm("Restore", "GlobalCrud"))
{
@Html.Hidden("entityId", "Id")
<input class="ui-icon ui-icon-power" type="submit"
onclick="return confirm('Clicking OK will restore this record');"
/>
}
Run Code Online (Sandbox Code Playgroud)
这是扩展
public static MvcHtmlString EditOrDelete(this HtmlHelper html)
{
var s = html.BeginForm();
return MvcHtmlString.Create(s + " additional fields " + "</form>");
}
Run Code Online (Sandbox Code Playgroud)
这是用途:
@using namespace.CustomHelper
@Html.EditOrDelete()
Run Code Online (Sandbox Code Playgroud)
这是输出:
<form method="post" action="/Completed/Manage">
System.Web.Mvc.Html.MvcForm additional fields
</form>
Run Code Online (Sandbox Code Playgroud)
大多数情况下,辅助扩展可以满足我的需求。但是,我不确定如何将其转换回正确的html字符串。返回内容包括System.Web.Mvc.Html.MvcForm在文本中。我在" additional fields "这里添加简洁是因为那里没有问题。</form>之所以using要@Html.BeginForm()添加</form>标记,是因为我知道随处理的普通语句会在标记处理后添加标记。
我如何正确返回由生成的表格.BeginForm?
public static class HtmlExtensions
{
public static void EditOrDelete(this HtmlHelper html)
{
using (html.BeginForm())
{
html.ViewContext.Writer.Write("additional fields");
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后:
@using namespace.CustomHelper
@{Html.EditOrDelete();}
Run Code Online (Sandbox Code Playgroud)
发出:
<form action="/" method="post">additional fields</form>
Run Code Online (Sandbox Code Playgroud)