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

I want to set a string in Javascript with an ASP.NET Html.Partial View. The problem is that Html.Partia

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);
};

发布者:admin,转转请注明出处:http://www.yc00.com/questions/1745673205a4639530.html

相关推荐

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

    I want to set a string in Javascript with an ASP.NET Html.Partial View. The problem is that Html.Partia

    6小时前
    20

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信