RazorEngine 中的 using-Statement(没有 MVC 中的 HtmlHelper)

2024-01-08

我使用的是 RazorEngine,没有 MVC 框架。 这意味着我没有用于创建模板的 HtmlHelper。

没关系,反正我不需要它的任何方法。 但我需要创建自己的方法,例如 BeginForm。

现在这些都是用 HtmlHelper.ViewContext.Writer.Write 完成的,而我没有。 是否有一种“开箱即用”的方法可以做到这一点,或者我必须在这里施展一些魔法?


The 剃刀引擎 http://razorengine.codeplex.com/旨在派生您自己的类型以在引擎本身中使用。

首先创建你自己的助手:

public class RazorHtmlHelper
{
    public IEncodedString Partial(string viewName)
    {
        ITemplate template = RazorEngine.Razor.Resolve(viewName);

        ExecuteContext ec = new ExecuteContext();

        RawString result = new RawString(template.Run(ec));

        return result;
    }
}

public class RazorUrlHelper
{
    public string Encode(string url)
    {
        return System.Uri.EscapeUriString(url);
    }
}

接下来创建您自己的模板:

public class RazorTemplateBase<T> : TemplateBase<T>
{
    private RazorUrlHelper _urlHelper = new RazorUrlHelper();

    private RazorHtmlHelper _htmlHelper = new RazorHtmlHelper();

    public RazorUrlHelper Url
    {
        get
        {
            return this._urlHelper;
        }
    }

    public RazorHtmlHelper Html
    {
        get
        {
            return this._htmlHelper;
        }
    }
}

在解析之前设置您的 TemplateServiceConfiguration:

Razor.SetTemplateService(new TemplateService(
  new TemplateServiceConfiguration()
  {
    BaseTemplateType = typeof(RazorTemplateBase<>)
  };
));

result = RazorEngine.Razor.Parse(templateText, model);

现在 RazorEngine 已经@Html.Partial() and @Url.Encode()在视图中可用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

RazorEngine 中的 using-Statement(没有 MVC 中的 HtmlHelper) 的相关文章

随机推荐

  • 如何检测 iframe 来源何时更改?

    我想检测用户何时单击其中的链接iframe并改变来源iframe 因为我想调整它的大小 我也使用 jQuery 检测这一点的最佳方法是什么 实际上我需要这样的东西 这个例子是在jQuery中 它不起作用 我想象这个 iframe live
  • 为什么 BindingSource 不告诉我哪个属性已更改?

    我正在考虑使用数据绑定 最简单的事情似乎是使用 BindingSource 来包装我的数据对象 然而 虽然 CurrentItemChanged 事件告诉我属性何时发生更改 但它并没有告诉我是哪一个属性发生更改 而这是我需要的重要部分 有什
  • 动画关键帧的 scss 函数

    我想做一个可重用的 sass 函数 让我可以轻松编写 keyframescss 动画 无需编写太多代码 但我不知道如何去做 尤其是数学部分 我有一个包含带有此 css 的单个背景图像的 div height 100vh width 8000
  • 与页面交互时图像质量第二次下降

    当页面以任何方式移动时 窗口大小调整 滚动 悬停 用作图标的图像会重新渲染并使侧面变得粗糙 它在具有透明背景和圆形边框的图像上非常明显 如示例中所示 有什么办法解决这个问题吗 例子 img src http www iconsd
  • 基本 Firebase 数据库保存

    任何人看到下面的内容都是正确的答案 并且我的所有设置都正确 我仍然不知道问题是什么 我用 facebook 登录 用它来创建一个 firebaseuser 对象 然后发送以下内容作为测试数据 我发现这是一个间歇性问题 从设备上卸载应用程序并
  • Reactjs - 控制多个复选框

    我在 Reactjs 中构建了一个 CheckAllBoxes 组件 我有一个物品清单 fruits orange apple grape 将军
  • 如何在不使用“return”语句的情况下退出异步协程?

    我在决定如何打破这个协程时遇到了一些麻烦 如果except声明捕获 通常 我只会使用 def f x try foo var next a volitile generator x except Exception print it bro
  • 如何在 Room 中动态创建新表?

    请帮帮我 在我的应用程序中 用户可以通过按按钮创建新的数据库表 用户还可以稍后访问该表以接收其中的数据 目前我通过 dataBaseHelper 类利用旧的 SQLite 所以我可以 public static void createTab
  • 如何在 Airflow 中的 PythonOperator 中登录 Python 函数

    我在 Airflow DAG 中使用 PythonOperator 并且需要在操作符的 Python 函数中打印一些内容 我尝试打印 但显然没有成功 不太确定这会起作用 接下来我尝试在 PythonOperator 中传递 self log
  • XAML 中的属性 Duration 不允许值类型 Duration

    我正在尝试使用普通的 Windows Metro 风格应用程序执行以下操作 public class MyButton Button public Duration Duration get set
  • 元类冲突:基类和派生类具有不同的元类

    class AbstractBaseClass metaclass abc ABCMeta abc abstractmethod def someMethod class DerviedClass AbstractBaseClass met
  • Sqlite + Java:表未更新

    我正在使用 SQLite 的 Java 包装器 名为SQLiteJDBC http www zentus com sqlitejdbc 这可能会对任何答案产生一些影响 我有一个在 GUI 中显示的表 在该 UI 中 我有一个用于该表的单个行
  • 地址可达性 - 服务器和端口 - iOS 5

    我正在尝试检查服务器是否在线或离线 连接到服务器时我面临一个问题 即它有一个端口 我现在的代码 struct sockaddr in address address sin len sizeof address address sin fa
  • 需要帮助用delphi打印文本文件

    我正在尝试使用 Delphi 2010 打印文本文件 我找到了一些代码 但是当我运行时 它要求保存 xps 文件 但不显示打印对话框 代码位于http www delphipages com forum showthread php t 7
  • curl 可以工作,但不会在 BASH 脚本中执行

    以下curl 命令在命令行中运行 我从服务器得到了有效的响应 curl X POST https somebaseurl api v1 auth login H Content Type application json d email f
  • Jersey / ServletContext 和启动时加载资源

    我是 Java Web 开发领域的新手 我正在开发一个网络服务 我选择了 REST Jersey for it 我想在服务启动时初始化一些东西并保留它们 贯穿整个服务生命周期 第一个问题 构造函数是JerseyServlet 是做这件事的好
  • 解析 Facebook logInInBackgroundWithReadPermissions (Swift)

    我已成功设置 Parse 1 7 1 SDK 和 Facebook v4 SDK 设置桥接头文件和 AppDelegate swift 现在在我的 ViewController 中 我正在尝试创建 Facebook 登录 并且我正在尝试使用
  • read.csv 在 R 中警告“EOF 在引用的字符串中”,但在 EXCEL 中成功读取

    我尝试读取从下载的 csv 文件here https d396qusza40orc cloudfront net repdata 2Fdata 2FStormData csv bz2 我用下面的代码阅读 storm data read cs
  • 网络爬虫的典型礼貌因素?

    网络爬虫的典型礼貌因素是什么 除了始终遵守robot txt 禁止 和非标准 抓取延迟 但是 如果站点没有指定显式的抓取延迟 则默认值应该设置为多少 我们使用的算法是 If we are blocked by robots txt Make
  • RazorEngine 中的 using-Statement(没有 MVC 中的 HtmlHelper)

    我使用的是 RazorEngine 没有 MVC 框架 这意味着我没有用于创建模板的 HtmlHelper 没关系 反正我不需要它的任何方法 但我需要创建自己的方法 例如 BeginForm 现在这些都是用 HtmlHelper ViewC