相关疑难解决方法(0)

如何获取ASP.NET MVC Ajax响应重定向到新页面而不是将视图插入UpdateTargetId?

我正在使用Ajax.BeginForm来创建一个表单,它将ajax回发到某个控制器操作,然后如果操作成功,用户应该被重定向到另一个页面(如果操作失败,那么将显示一个状态消息AjaxOptions UpdateTargetId).

using (Ajax.BeginForm("Delete", null,
        new { userId = Model.UserId },
        new AjaxOptions { UpdateTargetId = "UserForm", LoadingElementId = "DeletingDiv" },
        new { name = "DeleteForm", id = "DeleteForm" }))
   {
    [HTML DELETE BUTTON]
   }
Run Code Online (Sandbox Code Playgroud)

如果删除成功,我将返回重定向结果:

[Authorize]
public ActionResult Delete(Int32 UserId)
{
    UserRepository.DeleteUser(UserId);
    return Redirect(Url.Action("Index", "Home"));
}
Run Code Online (Sandbox Code Playgroud)

但是Home Controller Index视图已加载到UpdateTargetId中,因此我最终得到了页面中的页面.我正在考虑的两件事:

  1. 要么我正在设计这个错误,应该以不同的方式处理这种类型的操作(不使用ajax).
  2. 而不是返回Redirect结果,返回一个视图,其中包含javascript,在客户端进行重定向.

有人对#1发表评论吗?或者,如果#2是一个很好的解决方案,那么"重定向javascript视图"会是什么样子?

c# ajax asp.net-mvc asp.net-mvc-ajax

83
推荐指数
6
解决办法
12万
查看次数

如何使用带有JSON结果的Ajax.BeginForm MVC助手?

我正在尝试使用ASP.NET MVC Ajax.BeginForm帮助程序,但不希望在调用完成时使用现有的内容插入选项.相反,我想使用自定义JavaScript函数作为回调.

这有效,但我想要的结果应该作为JSON返回.不幸的是,框架只是将数据视为字符串.以下是客户端代码.服务器代码只返回一个带有一个字段UppercaseName的JsonResult.

<script type='text/javascript'>
    function onTestComplete(content) {
        var result = content.get_data();
        alert(result.UppercaseName);
    }
</script>

<% using (Ajax.BeginForm("JsonTest", new AjaxOptions() {OnComplete = "onTestComplete" })) { %>
    <%= Html.TextBox("name") %><br />
    <input type="submit" />
<%} %>
Run Code Online (Sandbox Code Playgroud)

而不是显示大写结果,而是显示未定义.content.get_data()似乎包含JSON,但只能以字符串形式存在.如何将其转换为对象?

所有这些看起来有点令人费解.有没有更好的方法来使用Ajax.BeginForm获取结果内容?如果这很难,我可以完全跳过Ajax.BeginForm并只使用jQuery表单库.

javascript asp.net-mvc asp.net-ajax

21
推荐指数
2
解决办法
4万
查看次数