2017-10-09 73 views
-2

我有一個ajax調用,它將兩個參數的數據傳遞給控制器​​動作。該操作被調用,但該操作的參數始終爲空值(在這種情況下,該整數是其默認值爲0的值)。我已經確保檢查ajax調用發送的數據包,並且我確實看到了正確的值,我打算使用正確的參數/屬性名稱以字符串化的JSON發送。MVC控制器僅接收來自AJAX的空值的動作

這裏是控制器動作:

[HttpPost] 
public IActionResult Summary(int courseID, String test) 
{ 
    using (LearningCurveContext db = new LearningCurveContext()) 
    { 
     Course course = db.Courses.Where(c => c.CourseId == courseID).FirstOrDefault(); 
     CourseSummary courseSummary = new CourseSummary 
     { 
      courseID = course.CourseId, 
      courseName = course.Name, 
      courseDescription = course.Description 
     }; 

     return PartialView(courseSummary); 
    } 
} 

這裏是Ajax調用:

$(document).on("click", ".courseName", function() 
    { 
     var element = this; 
     $.ajax({ 
      url: $(element).attr("data-url"), 
      type: "POST", 
      data: JSON.stringify({ "courseID": "1", "test": "blah" }), 
      dataType: "json", 
      contentType: "application/json; charset=utf-8", 
      cache: false, 
      success: function (data) 
      { 
       $("#details-live").html(data); 
      }, 
      error: function() 
      { 
       alert("Could not load course summary"); 
      } 
     }); 
    }); 

我試圖刪除內容類型選項,以及不字符串化的數據和發送的值courseID爲1以及「1」。似乎沒有任何工作。在調用動作並運行代碼時,URL是正確的 - 只是數據似乎沒有被綁定。

+0

你展示的代碼將被拋'500(內部服務器錯誤)',因爲你指定了'dataType:「json」,'但該方法返回HTML。你處理的是class =「courseName」的元素是什麼?(它是一個提交按鈕)? –

+0

@StephenMuecke它不會拋出500錯誤,因爲它永遠不會返回(它無法查詢數據庫,因爲沒有任何內容存在,ID爲0)。該元素是一個錨點,但元素不應該重要,因爲從它獲得的唯一數據是正確的URL。 – DeceitfulEcho

回答