2016-08-20 107 views
0

我有我的觀點的函數,就像這樣:如何從視圖通過Jquery.ajax()傳遞字符串值,ASP.NET MVC控制器

function doIncriment() { 
      var v1 = @ViewBag.CountNumber + 1; 
      var v2 = @int.Parse(Request.QueryString["idForAnswer"]); 
      var v3 = @int.Parse(Request.QueryString["View"]); 
      var v5 = @int.Parse(Request.QueryString["answerNumber"]); 
      var v6 = @Request.QueryString["title"]; 
      jQuery.ajax({ 
       url: '@Url.Action("pp", "Questions")', 
       method: "POST", 
       cache: false, 
       data: { votingUp : v1, questionId : v2 , viewNumber : v3, numberOfAnswer : v5 , titleString : v6 } 
      }).done(function (d) { 
       jQuery("#lblResult").text(d); 
      }); 
     } 

而且我的控制器這樣的代碼:

[HttpPost] 
public string pp(string votingUp, int questionId, int viewNumber, int numberOfAnswer, string titleString, [Bind(Include = "ID,Vote,Answer1,View,Title,Question,Date")] Questions questions) 
      { 
       questions.ID = questionId; 
       questions.Vote = int.Parse(votingUp); 
       questions.View = viewNumber; 
       questions.Date = DateTime.Parse("2016-08-10 23:39:33.000"); 
       questions.Answer1 = numberOfAnswer; 
       questions.Title = titleString.ToString(); 
       questions.Question = "test test"; 
       db.Entry(questions).State = EntityState.Modified; 
       db.SaveChanges(); 
       return (votingUp.ToString()); 
      } 

int值工作正常。但每當我嘗試傳遞任何字符串或日期時間數據時,ajax調用都沒有響應。我如何將這些值從我的ajax函數傳遞給控制器​​。

回答

0

如果您要發送字符串值,請確保您的方法參數也是string類型。目前您有int參數爲titleString

[HttpPost] 
public string pp(string votingUp, int questionId, int viewNumber, int numberOfAnswer, 
    string titleString, [Bind(Include = "ID,Vote,Answer1,View,Title, 
                 Question,Date")] Questions questions) 
{ 
    // to do : Return something 
} 

我還建議您確保使用正確的數據類型。如果您要發送數字值(例如:votingUp),則無需先使用字符串,然後再將其轉換回來。您可以直接使用int類型作爲參數類型,避免了鑄造後

[HttpPost] 
public string pp(int votingUp, int questionId, int viewNumber, int numberOfAnswer, 
    string titleString, 
     [Bind(Include = "ID,Vote,Answer1,View,Title,Question,Date")] Questions questions) 
{ 
    // to do : Return something 
} 

編輯:正如在評論中提及mmushtaq,你應該換的@Request.QueryString["title"]在引號中的值,以便它會被存儲爲字符串值在變量v6

var v6 = '@Request.QueryString["title"]'; 
+0

投票最多與投票相關聯。我認爲,這不是問題。 –

+0

是的。查看更新後的答案。你的'titleString'參數類型是錯誤的! – Shyju

+0

對不起,我的錯誤。它仍然不起作用。代碼已更新。 –

相關問題