4

我想用 ASP.NET Html.Partial 视图在 Javascript 中设置一个字符串。问题是 Html.Partial 给出了一个 HtmlString 而不是一个 Javascript 字符串,例如我可以用 JQuery 处理。

Javascript代码:

myfunction= function () {
   ...
   var badge=@Html.Partial("_UserBadge",User.Identity.Name).ToString();
   ....
   $("#myNode").append(badge);
};

Html-部分“_UserBadge.cshtml”:

@model WT.Models.ttUser

<div style="..">
...some more lines html...
</div>

我的问题是没有添加 ' 开头和每行末尾的 '+ 。我该如何解决这个问题?

代码结果为:

var badge=
<div style="..">
...some more lines html...
</div>;

而不是 javascript 字符串:

var badge=
'<div style="..">   '+
'...some more lines html...   '+
'</div>  ';
4

2 回答 2

2

你不能只使用类似的东西:

var badge='@Html.Partial("_UserBadge",User.Identity.Name).Replace( "\n", "\\n" ).Replace( "'", "\\'" )';

您在问题中建议您希望结果为:

'<div style="..">   '+
'...some more lines html...   '+
'</div>  ';

但请注意,这相当于:

'<div style="..">   ...some more lines html...   </div>  ';

这可能不是您真正想要的(因为这与 _UserBadge 页面不同)。

你可能真正想要的是更像这样的东西:

'<div style="..">\n...some more lines html...\n</div>';

该示例替换了"\n"将由 javascript 解释为换行符的换行符。最后,您需要将单引号替换为 ,"\'"以确保不会意外终止字符串。

于 2013-01-24T17:14:28.083 回答
1

我认为您可以使用 Json.NET 将对象序列化为 json(它将转义所有字符串字符)。

就像是:

@using Newtonsoft.Json

myfunction= function () {
   ...
   var badge=@(Html.Raw(JsonConvert.SerializeObject(Html.Partial("_UserBadge",User.Identity.Name))));
   ....
   $("#myNode").append(badge);
};
于 2013-01-24T17:29:23.930 回答