2016-08-15 2 views
1

になることはありません。アクションメソッドのIDは常にnullです。私は何か間違ったことをしています。アクションメソッドが期待通りに呼び出されます。razor ajaxからアクションメソッドへの値が

jQueryの機能:

function success(result) { 
    var Id = $('#UserId').val(); 
    var data = JSON.stringify({ 'Id': Id }); 
    alert(data); 
    $.ajax({ 
     type: "GET", 
     url: "@Url.Action("ListAppointments", "Appointment")", 
     data: data, 

     success: function (result2) { 
      $("#partialViewAppointments").html(result2); 
      $('#example').DataTable(); 

     } 
    }); 
} 

アクションメソッド:

public PartialViewResult ListAppointments(string Id) 
{ 
    var userId = Convert.ToInt32(Id); 
    var o = (from s in db.tblAppointments.ToList() 
      where s.UserId == userId 
      select new AppointmentViewModel { AppointmentInstructorName = s.InstructorName, AppointmentLessonAddress = s.Address, LessonDateTime = s.LessonDate, UserId = s.UserId, Id = s.ID }); 

    return PartialView(o); 
} 

答えて

2

でそれを渡すことができますデフォルトルートを残していると仮定するとあなたのデータにJSON stringifyを行うにはあなたはjsオブジェクトをそのまま送ることができます。今

var d ={ Id: $('#UserId').val()}; 
$.ajax({ 
      type: "GET", 
      url: "@Url.Action("ListAppointments", "Home")", 
      data: d 
      success: function (result2) { 
       $("#partialViewAppointments").html(result2); 
       $('#example').DataTable(); 
      } 
    }); 

これがGET要求であるため、データ(jsオブジェクト)は、サーバ(例:ListAppointments?Id=23)へのクエリ文字列値として送信されますが、そのjsオブジェクトにJSON.stringify呼び出しを行うときに

文字列"{"Id":23}"と返します。だから最終的なURLは、(クエリ文字列で)ajax呼び出しに使用されるListAppointments?{"Id":23}になります。これは無効であることがわかります。それでもcontentTypeを指定し、POST方法を使用し、(複雑なデータを送信する)JSON.stringifyを使用したい場合にはListAppointments?Id=23

でなければなりません。

また、あなたのアクションメソッドで文字列のparam値をintに変換しているのを見てください。数値データを送信するので、パラメータタイプとしてintを使用してください。

public PartialViewResult ListAppointments(int Id) 
{ 

} 
+0

なぜそれが私が見つけたものなのでstringifyで動作しないのですか? – Baahubali

+0

私はその情報を1 mntに含めるように答えを更新しています – Shyju

+0

@ user1490835更新された回答 – Shyju

0

この方法を行うことによって、私はそれが働いています。ないでくださいなぜ文字列化機能が働いてからそれを停止する:

function success(result) { 
     var Id = $('#UserId').val(); 
     var data = ({ Id: Id }); 
     alert(data); 
     $.ajax({ 
      type: "GET", 
      url: "@Url.Action("ListAppointments", "Appointment")", 
      data: data, 
      success: function (result2) { 
       $("#partialViewAppointments").html(result2); 
       $('#example').DataTable(); 

      } 
     }); 
    } 
0

あなたがContent-Type:'application/json'を逃したが、あなたはちょうどあなたが必要としないクエリパラメータ

function success(result) { 
    var Id = $('#UserId').val(); 
    alert(data); 
    $.ajax({ 
     type: "GET", 
     url: "@Url.Action("ListAppointments", "Appointment")" + "?id=" + Id, 
     data: data, 
     success: function (result2) { 
      $("#partialViewAppointments").html(result2); 
      $('#example').DataTable(); 

     } 
    }); 
} 
関連する問題