最新消息:Welcome to the puzzle paradise for programmers! Here, a well-designed puzzle awaits you. From code logic puzzles to algorithmic challenges, each level is closely centered on the programmer's expertise and skills. Whether you're a novice programmer or an experienced tech guru, you'll find your own challenges on this site. In the process of solving puzzles, you can not only exercise your thinking skills, but also deepen your understanding and application of programming knowledge. Come to start this puzzle journey full of wisdom and challenges, with many programmers to compete with each other and show your programming wisdom! Translated with DeepL.com (free version)

c# - Add Html.Partial to Javascript - Stack Overflow

matteradmin10PV0评论

I want to set a string in Javascript with an ASP.NET Html.Partial View. The problem is that Html.Partial gives an HtmlString and not a Javascript string which i can handle for example with JQuery.

Javascript code:

myfunction= function () {
   ...
   var [email protected]("_UserBadge",User.Identity.Name).ToString();
   ....
   $("#myNode").append(badge);
};

Html-Partial "_UserBadge.cshtml":

@model WT.Models.ttUser

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

My problem is that ' at beginning and '+ at the end of each line isn't added. How can i resolve the problem?

The code results to:

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

instead of a javascript string:

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

I want to set a string in Javascript with an ASP.NET Html.Partial View. The problem is that Html.Partial gives an HtmlString and not a Javascript string which i can handle for example with JQuery.

Javascript code:

myfunction= function () {
   ...
   var [email protected]("_UserBadge",User.Identity.Name).ToString();
   ....
   $("#myNode").append(badge);
};

Html-Partial "_UserBadge.cshtml":

@model WT.Models.ttUser

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

My problem is that ' at beginning and '+ at the end of each line isn't added. How can i resolve the problem?

The code results to:

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

instead of a javascript string:

var badge=
'<div style="..">   '+
'...some more lines html...   '+
'</div>  ';
Share Improve this question edited Jan 24, 2013 at 17:43 daniel asked Jan 24, 2013 at 16:49 danieldaniel 35.8k40 gold badges107 silver badges162 bronze badges 6
  • and the code for the Partial? – jmoerdyk Commented Jan 24, 2013 at 16:54
  • 2 and redacted to the point of uselessness. Not posting the entire code is tantamount to asking us to guess what's wrong. – jmoerdyk Commented Jan 24, 2013 at 16:59
  • the other lines of code doesn't concern the problem i have. I think the problem should be understandable now? – daniel Commented Jan 24, 2013 at 17:05
  • no, that is not the case. I think you don't understand the problem. – daniel Commented Jan 24, 2013 at 17:11
  • +1 I think there is sufficient information now to "divine" the intent. – JDB Commented Jan 24, 2013 at 17:40
 |  Show 1 more ment

2 Answers 2

Reset to default 2

Couldn't you just use something like:

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

You suggest in your question that you want the result to be:

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

but note that this is equivalent to:

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

which might not be what you actually want (since this is different from the _UserBadge page).

What you probably actually want is something more like this:

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

The example replaces newline characters with "\n" which will be interpreted by javascript as a newline character. Finally, you'll need to replace single quotes with "\'" to ensure that you don't accidentally terminate the string before you meant to.

I think you could use Json.NET for serializing objects to json (it will escape all the string characters).

Something like:

@using Newtonsoft.Json

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

comment list (0)

  1. No comments so far