MvcHtmlString without Razor Encoding

本文关键字:Encoding Razor without MvcHtmlString | 更新日期: 2024-10-30 22:47:25

我正在编写一个生成javascript代码并发送剃刀视图的方法。但是剃刀视图根据其头部对此进行编码。代码如下。

这是我的方法主体,返回一个 mvchtmlstring:

StringBuilder scriptHtml = new StringBuilder();
        scriptHtml.Append("<script>");
        scriptHtml.Append(@"var {0} = {{
                    id: 'someText',
                    title: '{1}',
                 $(document).ready(function () {{
                       $.function({0});
                   }});");
        scriptHtml.Append("</script>");
var output = string.Format(scriptHtml.ToString(), this.Id, this.Title);
return MvcHtmlString.Create(output);

所以现在,它的输出是:

@&lt;script&gt;var tlyPageGuide,,&quot;direction&quot;:&quot;Right&quot;

像这样的东西随着编码而增长。

这就是我想要的是 Razor 不应该在 cshtml 创建时更改我的代码,我必须获得带有渲染的纯 JavaScript 代码。

注意:我不想使用Html.Raw()作为解决方案。我想在服务器端做到这一点。

MvcHtmlString without Razor Encoding

您是否考虑过使用部分视图?

例如:(此代码可能包含错误,但您明白了):

class MyScriptModel
{
  public string Id {get;set;}
  public string Title {get;set;}
}
//your partial view: my_partial.cshtml
@model MyScriptModel
//extracted from your string builder
<script>
        var @Model.Id = {{
                    id: 'someText',
                    title: '@Model.Title',
                 $(document).ready(function () {{
                       $.function(@Model.Id);
                   }});
</script>
//instantiate the model
var model = new MyScriptModel {Id="someid", Title="some title"};
//using your partial view
@Html.Partial("my_partial", model)