1

我正在尝试使用 Ajax 注入一个视图,但它不是很有效。我对 Ajax 一无所知,但我正在努力学习。我在这里错过了什么,或者我这样做的方式完全错误。

    foreach(ect...) {
   <tr>
       <td>
      <a href="#" onclick="AjaxStoryClick(@item.Id)" style="color:dodgerblue; font-weight: bold">@item.Name</a>

       <script type="text/javascript">
function AjaxStoryClick(storyid) {

    $.ajax({
        url: '@Url.Action("UserStoriesList", "Estimate")',
        type: 'POST',
        data: storyid,
        success: function(result){
            $('#stories').html(result);

        }
     });         
}    

      </script>

控制器:

       public ActionResult UserStoriesList(int id)
    {
        ActiveEpicId = id;
        var userstories = userRepository.Select().Where(x => x.EpicId.Equals(id)).ToList();
        return PartialView("UserStoriesList",userstories);
    }
4

2 回答 2

3

UserStoriesListAction 方法是 Type吗HttpPost?您的 Ajax 请求属于POST. 所以它只会由 HttpPost 类型的 UserStoriesList 操作方法处理。

 [HttpPost]
 public ActionResult UserStoriesList(int id)
 {
   // your code goes here
 }

如果您的 ActionMethod 不是类型HttpPost(这意味着它是HttpGet类型),您可以使用 jquery get ajax 调用来获取数据

确保 ajax 调用中的参数名称与操作方法中的参数名称相同。

function AjaxStoryClick(storyid) {
  $.get('@Url.Action("UserStoriesList", "Estimate")',{id : storyid},function(result){
     $('#stories').html(result);
  });
}

}

于 2012-04-11T02:42:57.053 回答
1

Ajax 调用未将参数“Id”的值传递给操作方法“UserStoriesList”,行“data:storyid”应为“data:{id:storyid}”

由于您的操作方法“UserStoriesList”具有不可为空的id参数,服务器将生成错误响应:

如果 ajax 错误事件没有回调,您将看不到错误响应,并且在调试模式下,操作中的断点不会被命中。

这是更新的脚本:

<script type="text/javascript">

function AjaxStoryClick(storyid) {

 $.ajax({
    url: '@Url.Action("UserStoriesList", "Estimate")',
    type: 'POST',
    data: { id: storyid },
    success: function (result) {
        $('#stories').html(result);
    },
    error: function (xhr) {
        alert("Error: " + xhr.responseText);
    }
 });
}
</script>

动作方法:

public ActionResult UserStoriesList(int id)
{
  ActiveEpicId = id;
  var userstories = userRepository.Select().Where(x => x.EpicId.Equals(id)).ToList();

  if (Request.IsAjaxRequest())
    return PartialView("_UserStoriesList", userstories);
  else
    return View("UserStoriesList", userstories);
}
于 2012-04-11T04:08:00.290 回答