gpt4 book ai didi

c# - MVC 4 Ajax.Action 链接不起作用

转载 作者:太空狗 更新时间:2023-10-29 22:23:26 26 4
gpt4 key购买 nike

我正在尝试使用 Ajax 调用制作一个 MVC 网站。我直接使用 jquery 没有问题,但是当我使用 @Ajax.ActionLink 时,我没有得到我想要的结果。这是我的观点:

    <script type="text/javascript">
function deleteComment(id) {
$.post(
"/Role/AjaxTest",
//{ id: id },

function (data) {
$("#testtarget").html(data);
});
}
</script>


<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script>
<h2>TITLE</h2>
<p>
@Ajax.ActionLink("Ajax Test", "AjaxTest", "Role", new AjaxOptions{UpdateTargetId="testtarget",HttpMethod = "Get" , InsertionMode = InsertionMode.Replace })
</p>
<table>
@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.RoleName)
</td>
<td>
<a onclick="deleteComment('@item.RoleId'); return false;" href="#">Delete</a>
@Html.ActionLink("Delete", "Delete", new { id=item.RoleId })

</td>
</tr>
}
</table>
<div id="testtarget">Test Div</div>

这是我的 Controller 数据:

public string AjaxTest()
{
return "Some random text";
}

我对 Jquery 的调用完美运行,文本出现在 div 中,但我的操作链接只是将我重定向到:localhost/Role/AjaxTest,所以我只在银行浏览器中收到消息。

知道这里出了什么问题吗?

提前致谢!

最佳答案

确保您已将 jquery.unobtrusive-ajax.js 脚本添加到您的页面:

<script type="text/javascript" src="~/scripts/jquery.unobtrusive-ajax.js"></script>

或者,如果您使用的是 bundle (这是推荐的方法),请确保您已包含一个包含此脚本的 bundle 。例如,当您使用将是 ~/bundles/jqueryval 包的 Internet 模板创建一个新的 ASP.NET MVC 4 项目时:

bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
"~/Scripts/jquery.unobtrusive*",
"~/Scripts/jquery.validate*")
);

因此请确保它在 jquery 包之后包含在您的 View 中:

@Scripts.Render("~/bundles/jquery")
@Scripts.Render("~/bundles/jqueryval")

或者只是将它们组合成一个包。这完全取决于您的要求以及您是否需要不显眼的 jquery 验证支持。

我还建议您让 Controller 操作返回 ActionResult 而不是字符串:

public ActionResult AjaxTest()
{
return Content("Some random text");
}

关于c# - MVC 4 Ajax.Action 链接不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12861375/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com