2011-09-13 11 views
0

問題... JSONからデータを取得しながら、私は問題を抱えています。.. Asp.net MVC 3

をJSON結果をrecevingながら、私は$アヤックスを通じていくつかの値を渡していますし、私はそれを処理したいですコントローラ内の値..

...私は、コントローラ内の値を取得する方法、助け

のjQueryコードしてください

var userID = @Model.User.UserID; 
     var postID = @Model.Post.PostID; 
     var commentBody = $('#textareaForComment').val(); 

$('#btnSubmit').click(function (e) 
    { 

     e.preventDefault(); 
     var postdata = 
     { 
      CommentBody: commentBody, 
      PostID: postID, 
      UserID: userID    
     }; 

     $.ajax({ 
      url: '@Url.Action("SubmittedComment","Post")', 
      data: postdata, 
      success: function(data) { 
       $('#showComments').html(data); 
      } 
     }); 
    }); 

今私はポーでSubmittedCommentアクションを呼び出しています私はPostID、USerID、CommentBodyをそのアクションに入れたいと思ってdiff変数に格納したいと思っています。

助けてください。 THX

コントローラコード

public JsonResult SubmittedComment(string CommentBody,UserID,PostID) 
     { 

      var result = CommentBody // i am not able to get the value here .... 

     } 

答えて

2
$('#btnSubmit').click(function() { 
    $.ajax({ 
     url: '@Url.Action("SubmittedComment","Post")', 
     // Values should be evaluated at the callback, not at page load time 
     // this is not the case for UserID and PostID, but for CommentBody it is 
     data: { 
      UserID: @Model.User.UserID, 
      PostID: @Model.Post.PostID, 
      CommentBody: $('#textareaForComment').val() 
     }, 
     success: function(data) { 
      // Controller action returns data in Json format, so .html() makes no sence here. 
      // Change action to return html markup via PartialView or change this function to 
      // parse Json. Also, returning Json via GET request is forbidden by default by ASP.NET MVC (just in case you don't know 
      $('#showComments').html(data); 
     } 
    }); 
    return false; // Equals to e.preventDefault() 
}); 
+1

+1は、ClickBodyがクリックハンドラで評価されるべきであることを指摘しています。 – RoccoC5

+0

真剣に...そのことは分かっています...非常に役立ちます.... –

1

あなたのjQueryのAJAX呼び出しがHTTP POSTを行っていません。

編集:Artemが指摘したように、ボタンクリックイベントで$('#textareaForComment').val()も評価する必要があることに注意してください。

あなたのコールにオプションtype: 'POST'を追加します。

また
$('#btnSubmit').click(function (e) 
{ 
    e.preventDefault(); 
    var postdata = 
    { 
     CommentBody: $('#textareaForComment').val(), 
     PostID: postID, 
     UserID: userID    
    }; 

    $.ajax({ 
     url: '@Url.Action("SubmittedComment","Post")', 
     data: postdata, 
     type: 'POST', 
     success: function(data) { 
      $('#showComments').html(data); 
     } 
    }); 
}); 

post()機能を使用します。あなたはまた、exucutionを制限するために、あなたのコントローラのアクションに[HttpPost]属性を追加することになるでしょう

$.post('@Url.Action("SubmittedComment","Post")', 
    postdata, 
    success: function(data) { 
     $('#showComments').html(data); 
    } 
); 

をメソッドのHTTP POSTのみ:

[HttpPost] 
public JsonResult SubmittedComment(string CommentBody, int UserID, int PostID) 
{ 
    // ... snip ... 
} 
+0

それを得ました...私は$ .ajaxコールで型を入れていることを完全に忘れていました...それを指し示すためにthx ... –

関連する問題