gpt4 book ai didi

asp.net-mvc - 返回 JsonResult 的 ASP.Net MVC Ajax 调用

转载 作者:行者123 更新时间:2023-12-04 00:26:07 26 4
gpt4 key购买 nike

我开始学习 ASP.Net MVC(候选版本),但遇到了一些小麻烦。我可能只是挑剔,但我想我会问。

我想使用内置的(扩展的)ASP.Net Ajax 方法来调用我的 Controller ,称为“GetNames”,它返回一个 JsonResult 对象。我看过使用 $.getJSON() jQuery 方法的示例,但我更愿意这样做:

 <%using ( Ajax.BeginForm("GetNames", new AjaxOptions() { OnSuccess = "GetNamesSuccess", OnBegin = "GetNamesBegin", OnComplete = "GetNamesComplte", OnFailure = "GetNamesFailure" } ) ) { %>

<%=Html.TextBox("DummyData") %>
<input type=submit />

<% } %>

<script type="text/javascript">
function GetNamesSuccess()
{
alert("Success");
}

function GetNamesBegin()
{
alert("Begin");
}

function GetNamesComplete()
{
alert("Complete");
}

function GetNamesFailure()
{
alert("Failure");
}
</script>

当我单击“提交”按钮时,我没有收到任何警报,系统提示我下载包含 Json 对象文本的文件,我认为这表明至少 Controller 方法工作正常。但这不是我的预期行为......理想情况下,Ajax.BeginForm 会将其设置为将 Json 对象传递给 OnSuccess 或 OnComplete 方法。

有没有办法做到这一点?

最佳答案

您是否在 View 页面中包含了 MicrosoftAjax.js 和 MicrosoftMvcAjax.js javascript 文件?在我看来,它实际上是在发布表单而不是使用 Ajax。当我缺少 MicrosoftAjax.js 包含时,我遇到了这个问题,因为 Ajax 回发由于缺少 javascript 类而失败,因此它调用了正常的表单发布。

在相关说明中,您应该在 Controller 中检查请求是否为 Ajax,如果不是,则返回 ViewResult(或重定向)而不是 Json。如果有人关闭了 javascript 或者您的页面上有错误,您希望它优雅地降级并将其作为正常回发处理,而不是返回 Json。

关于asp.net-mvc - 返回 JsonResult 的 ASP.Net MVC Ajax 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/497295/

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