首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不带剃刀编码的MvcHtmlString

不带剃刀编码的MvcHtmlString
EN

Stack Overflow用户
提问于 2015-03-09 02:37:32
回答 1查看 533关注 0票数 1

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

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

代码语言:javascript
复制
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);

所以现在,它的输出是:

代码语言:javascript
复制
@&lt;script&gt;var tlyPageGuide,,&quot;direction&quot;:&quot;Right&quot;

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

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

注意:我不想使用Html.Raw()来解决这个问题,我想在服务器端实现。

EN

回答 1

Stack Overflow用户

发布于 2015-03-09 03:49:24

你有没有考虑过使用局部视图?

例如:(此代码可能包含错误,但您可以理解其中的意思):

代码语言:javascript
复制
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)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28930330

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档