繁体   English   中英

将Html.Partial添加到Javascript

[英]Add Html.Partial to Javascript

我想在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>  ';

难道你不能只使用这样的东西:

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解释为换行符。 最后,您需要用"\\'"替换单引号,以确保在意图之前不会意外终止字符串。

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

就像是:

@using Newtonsoft.Json

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM