在 MVC 中使用 Ajax
本文关键字:Ajax MVC | 更新日期: 2023-09-27 18:30:37
我正在尝试使用 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);
}
UserStoriesList
操作方法是否为 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);
});
}
}
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);
}