gpt4 book ai didi

c# - 从非 MVC 类生成 HTML

转载 作者:太空宇宙 更新时间:2023-11-03 19:53:25 25 4
gpt4 key购买 nike

我有一个方法可以获取给定字符串的本地化并返回它。此方法由 HtmlHelper 的扩展方法调用,以便可以从 Razor View 访问它。但是,有时我们也会在 Controller 和其他非 Razor 地方使用它,这就是我们拥有“内部”方法的原因。

现在,出于调试目的,我想将返回的本地化(或可能不是)字符串包装到一些 HTML 中(类似于 <span class="localized">Returned text</span> )。但是,如果我写

return string.Format("<span class=\"localized\">{0}</span>", text);

然后呈现的页面包含 <>字符就好像它们是 HTML 编码的一样,所以输出是伪造的。

我当然不能调用HtmlHelper.Raw(string s) ,部分原因是我不知道如何创建 HtmlHelper来自 MVC Controller 外部,然后因为它返回 IHtmlString不能分配给 string .

如果我调用 HttpUtility.HtmlEncode(string s) ,文本经过两次编码,渲染页面显示&lt;span class&eq;&quot;... .

我应该怎么做才能在 View 中呈现为 HTML 的字符串?


编辑

这是代码,来自 Helper静态类(所有扩展方法都有效,除了它们的行为不正确):

public static string localize(string textId)
{
string ret = "";

// Query to obtain the localized string,
// or to obtain a fallback in case there are issues
// (missing localization, wrong id...)
// In the end, ret is filled with the output string

#if !OFFICIAL
ret = string.Format("<span class=\"localized\" title=\"{1}\">{0}</span>", ret, expression);
#endif

return ret;
}

public static string localize(this HtmlHelper htmlhelper, string expression)
{
return trad(textId);
}

最佳答案

鉴于你的评论你想做

@Html.localize("textId")

输出一个 HTML 元素,解决方案似乎很明显:使用 string 的返回类型,这在设计上是不可能的。因此,将您的方法更改为不返回 string

您已经发现原则上您可以使用返回 IHtmlStringHtmlHelper.Raw,除了 IHtmlString 不可分配给 字符串。如果将返回类型更改为 IHtmlString,问题就解决了。

关于c# - 从非 MVC 类生成 HTML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36153471/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com