【问题标题】:Creating Html helper like BeginForm in Nancy with Razor使用 Razor 在 Nancy 中创建像 BeginForm 这样的 Html 助手
【发布时间】:2015-08-11 08:57:34
【问题描述】:

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

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

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

【问题讨论】:

  • 你知道怎么做吗?我也很想知道。
  • @BenDaniel 不,我想您需要使用 Microsoft 实现才能做到这一点。

标签: c# razor nancy


【解决方案1】:

尝试使用这样的扩展方法:

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
}

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 是的,我已经能够进行这种扩展。我已经澄清了这个问题,以便更好地解释我想做什么。
    【解决方案3】:

    基于Piotr answer,
    我刚刚在 GitHub 中创建了一个存储库来进行测试。

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

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

    祝你好运。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-11-04
      • 2012-04-18
      • 2013-07-12
      • 1970-01-01
      • 2012-08-30
      • 2020-04-19
      • 1970-01-01
      相关资源
      最近更新 更多