4

ASP.NETHtml.PartialViewを使用してJavascriptで文字列を設定したいと思います。問題は、Html.PartialがHtmlStringを提供し、たとえばJQueryで処理できるJavascript文字列を提供しないことです。

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にシリアル化するためにJson.NETを使用できると思います(すべての文字列文字をエスケープします)。

何かのようなもの:

@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 に答える