4

ビューの1つに次のコードがあります

@if (ViewBag.LoginInfo != null)
{
    var loginToken = "@ViewBag.LoginInfo.Token";
    var loginUser = "@ViewBag.LoginInfo.UserNameJs";
    var notifyUrl = "@ViewBag.LoginInfo.NotificationUrl";
}

{ } の間のコードは、JavaScript としてページにレンダリングする必要がありますが、サーバー側のコードとして実行されているようです。この場合、コードは C# および JavaScript として有効です。{}の間のすべてをjavasriptとしてページに強制的に書き込むにはどうすればよいですか?

ありがとう

4

2 に答える 2

11

代わりに使用@:

@if (ViewBag.LoginInfo != null)
{
    @:var loginToken = @Html.Raw(Json.Encode(ViewBag.LoginInfo.Token);
    @:var loginUser = @Html.Raw(Json.Encode(ViewBag.LoginInfo.UserNameJs);
    @:var notifyUrl = @Html.Raw(Json.Encode(ViewBag.LoginInfo.NotificationUrl);     
}
于 2015-05-07T10:41:49.183 に答える
11

<text>それらをタグでラップできます:

@if (ViewBag.LoginInfo != null)
{
    <text>
        var loginToken = @Html.Raw(Json.Encode(ViewBag.LoginInfo.Token);
        var loginUser = @Html.Raw(Json.Encode(ViewBag.LoginInfo.UserNameJs);
        var notifyUrl = @Html.Raw(Json.Encode(ViewBag.LoginInfo.NotificationUrl);
    </text>
}

また、値を安全にエンコードした方法にも注意してください。たとえば、トークンに"文字が含まれている場合、この例では無効な JavaScript が生成されます。私の例に示すように、安全なシリアライザーを使用せずに、javascript とサーバー側の値を混在させてはなりません。

于 2013-07-26T14:39:03.733 に答える