我们正在使用自托管的Nancy服务器,我正在使用Razor viewengine来提供Web视图。 我正在研究创建自定义HtmlHelpers并且能够使用简单的示例。但是我想做的一件事就是一个像BeginForm()一样工作的帮助器,你可以在标记中使用using语句在using块的开头和结尾创建输出。
@using (Html.BeginForm())
{
<some html here>
}
我发现的所有示例都基于Asp.Net MVC,就像在这个答案中一样:https://stackoverflow.com/a/7928566/1128038
它似乎在Nancy实现中的工作方式不同。
这有可能吗?
答案 0 :(得分:3)
尝试使用这样的扩展方法:
public static class HtmlHelperExtensions
{
public static BeginFormObject BeginForm(this HtmlHelpers helpers, NancyRazorViewBase view)
{
return new BeginFormObject("<form method=\"post\">", view);
}
public class BeginFormObject : IDisposable
{
private NancyRazorViewBase view;
public BeginFormObject(string markup, NancyRazorViewBase view)
{
this.view = view;
view.WriteLiteral(markup);
}
public void Dispose()
{
view.WriteLiteral("</form>");
}
}
}
这允许在剃刀中使用以下语法:
@using (Html.BeginForm(this))
{
....other stuff
}
答案 1 :(得分:0)
答案 2 :(得分:0)
基于Piotr answer,
我刚刚在GitHub中创建了一个存储库来测试它。
这是Mix Self托管和Razor的简单解决方案。
检查您是否正在搜索:
NancySelfHostRazorTest