我想在Javascript中使用ASP.NET Html.Partial View设置一个字符串。问题是Html.Partial提供了一个HtmlString,而不是一个Javascript字符串,我可以用JQuery来处理它。
Javascript代码:
myfunction= function () {
...
var badge=@Html.Partial("_UserBadge",User.Identity.Name).ToString();
....
$("#myNode").append(badge);
};
Html-Partial“_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> ';
答案 0 :(得分: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将其解释为换行符。最后,您需要使用"\'"
替换单引号,以确保在意图之前不会意外终止字符串。
答案 1 :(得分:1)
我认为您可以使用Json.NET将对象序列化为json(它将转义所有字符串字符)。
类似的东西:
@using Newtonsoft.Json
myfunction= function () {
...
var badge=@(Html.Raw(JsonConvert.SerializeObject(Html.Partial("_UserBadge",User.Identity.Name))));
....
$("#myNode").append(badge);
};