2017-10-09 52 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

回答

相关问题