【问题标题】:@Html.Raw equivalent in MVC6MVC6 中的 @Html.Raw 等效项
【发布时间】:2016-06-15 12:05:02
【问题描述】:

我有几个复制粘贴的控件。我想避免它,所以我将所有 HTML 生成逻辑移到了静态帮助器类中。但是当我使用它时,我的 HTML 在引号中转义,但我想以原始 HTML 显示它。这里有两个问题:

  1. 我无法扩展控制器本身,我只能从视图中进行。
  2. 我不能使用标签助手,因为其中一个参数是委托类型,所以它不能传递给标签助手类(据我所知)。

我目前的用例是:

<div class="panel-body panel-body-table">
    @(WuiHelper<int>.RenderIntegerInput(Model.Config, x => x.PatchSize, "sourceObserver_patchSize", "Patch Size", 1, 1000000))
</div>

但正如我所说,它在引号中转义了一个 html,因此它呈现为纯文本(方法的返回类型是 string)。 似乎 @Html 助手类已被删除。我现在的web.config 是:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.webServer>
    <handlers>
      <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified"/>
    </handlers>
    <aspNetCore processPath="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="false"/>
  </system.webServer>
</configuration>

这是一个截图:所有的命名空间都被引用了,但是@Html 不见了:

【问题讨论】:

  • @Html.Raw 存在于 aspnetcore 中,你仍然可以使用它
  • 看起来像是stackoverflow.com/q/27895578/728795的骗子
  • @JoeAudette 好吧,我真的没看到。也许它在 RC2 中被删除了。我也试过@Raw@(new RawString()),但它们也都不见了。
  • @Andrei 你的帖子链接了一个修改控制器的帖子,而我做不到。
  • @AlexZhukovskiy 它没有在 rc2 中删除我正在使用 rc2 并且只是测试以确保它仍然存在

标签: c# asp.net .net asp.net-mvc asp.net-core


【解决方案1】:

通过使用IHtmlContent而不是string作为方法的返回值,并在HtmlEncodedString中包装一个字符串来解决。 整个签名有效:

public static IHtmlContent RenderIntegerInput<T>(CustomizableConfig<T> model, Func<T, TParam> func, string id, string name, int minValue, int maxValue)
{
   //...
   string oldStringResult = ... // generating HTML
   return new HtmlEncodedString(oldStringResult);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-09
    • 1970-01-01
    • 2013-12-16
    • 2018-06-25
    • 2015-07-09
    • 2017-10-24
    • 2014-07-04
    相关资源
    最近更新 更多