2

私の MVC ビュー内には、ボタンのクリックで実行される JavaScript があります。文字列をランダムな文字セットに設定して正常に動作させようとしていますが、その文字列を JavaScript 内で「randomchars」文字列に設定しようとすると、ビューを実行しようとすると NullReferenceException が発生します。

以下はコード スニペットです。CreateRString は、モデル パラメーター (RString) がランダムな文字列に設定されている場所です。

<script type="text/javascript">
    function showAndroidToast(toast) {

        var url = '@Url.Action("CreateRString", "Functions")';
        $.ajax({ url: url, success: function (response) { window.location.href = response.Url; }, type: 'POST', dataType: 'json' });

        var randomchars = '@(Model.RString)';
    }
</script>

構文は正しいですか?なぜNULLになっているのかよくわかりません。

4

1 に答える 1

2

JavaScript は、ページがクライアント (つまり Web ブラウザ) に配信された後に実行されます。ここでのカミソリ コードは、ページがクライアントに送信される前にサーバー上で実行されます。したがって、アクセスしようとすると ajax メソッドが実行されます。Model.RString

これを修正するCreateRStringには、サーバーで呼び出すかrandomchars、成功のコールバックで応答を使用して設定できます。

オプション 2 についてもう少し説明します。次のようなことができます。

//Action Method that returns data which includes your random chars
public JsonResult CreateRString()
{
    var myRandomChars = "ABCDEF";
    return new JsonResult() { Data = new { RandomChars = myRandomChars } };
}

//The ajax request will receive json created in the CreateRString method which 
//contains the RandomChars
$.ajax({ url: url, success: function (response) { 
    var randomchars = response.Data.RandomChars;
    window.location.href = response.Url; 
}, type: 'POST', dataType: 'json' });

より具体的には、剃刀は最初にサーバー上で呼び出し@Url.Action("CreateRString", "Functions")@(Model.RString)実行します。

次にshowAndroidToast、呼び出すとクライアントのブラウザで実行されます。

于 2013-04-29T23:33:46.230 に答える