Razor视图扩展方法?

发布于 2024-11-08 13:04:57 字数 133 浏览 0 评论 0原文

我想创建一个可以使用 @this 在 CSHTML 文件中使用的扩展方法,这样我就可以访问该方法中的 Layout 和 PageData 属性。

现在,我想知道要扩展哪个类,我尝试了 StartPage 和 ViewStartPage。

I want to create an extension method which I can use in CSHTML file using @this, so I can have accesss to Layout and PageData properties in the method.

Now, what I want to know is which class to extend, I tried both StartPage and ViewStartPage.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

指尖微凉心微凉 2024-11-15 13:04:57

您需要将扩展​​方法添加到System.Web.Mvc.WebViewPage。 ViewStartPage 和 StartPage 分别表示 _ViewStart.cshtml 文件(以及 ASP.NET 网页中的 _PageStart.cshtml)。

You need to add the extension method to System.Web.Mvc.WebViewPage. ViewStartPage and StartPage represent the _ViewStart.cshtml file (and _PageStart.cshtml in ASP.NET WebPages) respectively.

倾城花音 2024-11-15 13:04:57

你好,

如果我理解正确的话,HTML 帮助器方法可以帮助你。

您可以将页面中的所有变量作为参数传递。

@Html.ShowMyText(Model.YourStringToUse)

在你的辅助方法中,你可以执行你的逻辑并返回应该渲染的内容。
(我想你也可以修改你的 helper.ViewContext 对象中的一些东西。

你的 Html-helper 可能看起来像这样:

public static HtmlString ShowMyText(this HtmlHelper helper,string pourStringToUse)
{ 
     CultureInfo cultureInfo = (CultureInfo)helper.ViewContext.HttpContext.Session["CurrentLanguage"];

    if (cultureInfo.IetfLanguageTag.Equals("en-EN") == true)
    {
        return new HtmlString("English");
    }
    else
    {
        return new HtmlString("Not English");
    }
}

所以也许它给你一个起点。无论如何,你可能无法访问你需要的一切。

Hallo,

If I understand it right a HTML helper method could help you.

You could pass as a parameter all variables you have in your page.

@Html.ShowMyText(Model.YourStringToUse)

And in your helper method you can do your logic and return something what should be rendered.
(My be you can also modify some things in your helper.ViewContext object.

Your Html-helper could look like this:

public static HtmlString ShowMyText(this HtmlHelper helper,string pourStringToUse)
{ 
     CultureInfo cultureInfo = (CultureInfo)helper.ViewContext.HttpContext.Session["CurrentLanguage"];

    if (cultureInfo.IetfLanguageTag.Equals("en-EN") == true)
    {
        return new HtmlString("English");
    }
    else
    {
        return new HtmlString("Not English");
    }
}

So maybe it gives you a starting point. Anyway, it's possible that you don't have access to everything you need.

三岁铭 2024-11-15 13:04:57

您应该采用所有 Razor 视图都继承的 WebPageBase 类。

You should take the WebPageBase class, which all Razor views inherit.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文