0

このjquery関数を.jsファイルに配置しています...ページが読み込まれている限り、これは機能します...しかし、部分ビューとして返すように変更すると、このアラートは機能しなくなります...どうやってまた動くの?

  $(document).ready(function () {

    var msg = '@ViewBag.Message';

    if (msg == '1')
        alert("New Time Shift has been saved.");

});

私のコントローラーアクションでは...

   if (Request.IsAjaxRequest())
          return PartialView("_RecordList", userRecord); //alert wont work here...

   return View(userRecord); //this will return the whole view thus the alert works here
4

2 に答える 2

1

ドキュメントレディ機能は、ajaxリクエストからは実行されません。ビュー全体の分離された関数部分にJavaScriptコードを抽出できます。部分的なリクエストが成功したときに実行されるコールバック関数を作成することもできます。これにより、次のように呼び出されます。

$(document).ready(function () {
    var msg = '@ViewBag.Message';
    initFunction(msg);
});

function initFunction(msg){
    if (msg == '1')
        alert("New Time Shift has been saved.");
}

function partialRequestSuccess(data){
    //store the message somewhere in the partial view, like a hidden div and get it using jquery
    var msg = ...
    initFunction(msg);
}

次に、ajaxリクエストの完全なコールバックを設定して、作成したばかりの成功コールバックを呼び出すことができます。MVC ajaxヘルパーを使用している場合は、次のように設定できるSuccessパラメーターがあります。

@using(Ajax.BeginForm(new AjaxOptions{ OnSuccess = "partialRequestSuccess" }))
于 2012-11-19T20:52:23.677 に答える
0

I have this jquery function placed in my .js file....

var msg = '@ViewBag.Message';

これはサーバーコードであり、*.cshtmlファイルでのみ機能します。これは少なくとも1つの問題です。

于 2012-11-19T12:19:49.743 に答える