4

我们使用的是自托管的 Nancy 服务器,我使用 Razor 视图引擎来提供 Web 视图。我正在研究创建自定义 HtmlHelpers 并且已经能够使简单的示例正常工作。但我想做的一件事是一个类似于 BeginForm() 的助手,您可以在标记中使用 using 语句来在 using 块的开头和结尾创建输出。

@using (Html.BeginForm())
{
    <some html here>
}

我发现的所有示例都基于 Asp.Net MVC,就像在这个答案中一样:https
://stackoverflow.com/a/7928566/1128038 它在 Nancy 实现中的工作方式似乎不同。这有可能吗?

4

3 回答 3

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>");
        }
    }
}

这允许在 razor 中使用以下语法:

@using (Html.BeginForm(this))
{
....other stuff
}
于 2014-04-23T06:44:34.353 回答
0

这个https://gist.github.com/thecodejunkie/6298564应该让你开始。

于 2013-08-23T13:14:45.320 回答
0

根据Piotr 的回答
我刚刚在 GitHub 中创建了一个存储库来测试它。

这是一个混合自托管和 Razor 的简单解决方案。

检查它是否是您搜索的内容:
NancySelfHostRazorTest

祝你好运。

于 2015-08-11T00:57:34.053 回答