加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – 在App_Code中的共享@helper中使用@Html

发布时间:2020-12-15 18:43:37 所属栏目:asp.Net 来源:网络整理
导读:我正在建立一个非常基本的MVC3网站,而我学习的时候我遇到了以下声明性的Razor html助手。 里面的RMB.cshtml里面的App_Code文件夹: @helper ReplaceCrLf(string strText){ @Html.Raw(Html.Encode(strText).Replace(Environment.NewLine,"br /"));} 在我的in
我正在建立一个非常基本的MVC3网站,而我学习的时候我遇到了以下声明性的Razor html助手。

里面的RMB.cshtml里面的App_Code文件夹:

@helper ReplaceCrLf(string strText)
{
    @Html.Raw(Html.Encode(strText).Replace(Environment.NewLine,"<br />"));
}

在我的index.cshtml视图中:

@RMB.ReplaceCrLf(Model.Post)

这给我在帮助者中的Html上的一个空引用异常,因为它似乎不知道它是什么。我可以通过将Html从视图传递给帮助者来解决这个问题,但是我想知道,如果我的共享html帮助者有另一种方式能够引用Html,而不必将其传递给我写的帮助器?

为了完整,这里是工作解决方法:

在App_Code中的RMB.cshtml中

@helper ReplaceCrLf(string strText,System.Web.Mvc.HtmlHelper Html)
{
    @Html.Raw(Html.Encode(strText).Replace(Environment.NewLine,"<br />"));
}

在index.cshtml视图中

@RMB.ReplaceCrLf(Model.Post,Html)

解决方法

我现在将其添加到App_Code中的任何.cshtml文件。
// Using's are needed to ensure helpers function correctly.
@using System.Web.Mvc;
@using System.Web.Mvc.Html;
@using System.Web.Mvc.Routing;
@using System.Web.Mvc.Razor;
@functions {
    private static WebViewPage page { get { return PageContext.Page as WebViewPage; } } 
    private static System.Web.Mvc.HtmlHelper<dynamic> html { get { return page.Html; } }
    private static UrlHelper url { get { return page.Url; } }
    private static dynamic viewBag { get { return page.ViewBag; } }
}

编辑:将帮助器变量名称修改为小写,因为我与内置的助手名称有一些冲突。我已经修改了html帮助程序是通用的,它允许使用TextBoxFor等帮助程序

这使得这些精彩的助手可以使用该文件中的所有@helper方法和函数。

非常感谢Neshta的原创概念!

完整的例子来回答问题:

在App_Code文件夹中的RMB.cshtml中

@functions {
    public static WebViewPage page = (PageContext.Page as WebViewPage);
    public static HtmlHelper<object> html = page.Html;
}

@helper ReplaceCrLf(string strText)
{
    @html.Raw(Html.Encode(strText).Replace(Environment.NewLine,"<br />"));
}

在视图中:

@RMB.ReplaceCrLf("line1nline2") // No passing HtmlHelper

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读