【问题标题】:Ajax.BeginForm that can redirect to a new page可以重定向到新页面的 Ajax.BeginForm
【发布时间】:2012-02-22 08:13:28
【问题描述】:

我的模型有一个 @Ajax.BeginForm,它有一个布尔值 (@Html.CheckBoxFor)。如果选中此项,我希望我的 HttpPost 操作重定向到新页面。否则,我希望它继续成为 @Ajax.BeginForm 并更新页面的一部分。

这是我的 HttpPost 操作(注意:Checkout 是我模型中的布尔值)

控制器:

    [HttpPost]
    public ActionResult UpdateModel(BasketModel model)
    {
        if (model.Checkout)
        {
            // I want it to redirect to a new page
            return RedirectToAction("Checkout");
        }
        else
        {
            return PartialView("_Updated");
        }
    }

【问题讨论】:

    标签: asp.net-mvc-3


    【解决方案1】:

    您可以使用 JSON 并在客户端执行重定向:

    [HttpPost]
    public ActionResult UpdateModel(BasketModel model)
    {
        if (model.Checkout)
        {
            // return to the client the url to redirect to
            return Json(new { url = Url.Action("Checkout") });
        }
        else
        {
            return PartialView("_Updated");
        }
    }
    

    然后:

    @using (Ajax.BeginForm("UpdateModel", "MyController", new AjaxOptions { OnSuccess = "onSuccess", UpdateTargetId = "foo" }))
    {
        ...
    }
    

    最后:

    var onSuccess = function(result) {
        if (result.url) {
            // if the server returned a JSON object containing an url 
            // property we redirect the browser to that url
            window.location.href = result.url;
        }
    }
    

    【讨论】:

    • @Darin Dimitrov 我想重定向到需要将 id 参数传递给它的操作。我将如何从我的 Ajax.BeginForm 视图中传递它?
    • 我无法让 var onSucess 工作。我在视图中加载了这些 jquery 脚本。 jquery.unobtrusive-ajax.min.js jquery-ui-1.8.20.min.js jquery-ui-1.8.22.custom.min.js jquery.validate.min.js jquery.validate.unobtrusive.min.js 这里是视图中的代码 @{var onSuccess = function(result) { if (result.url) { window.location.href = result.url; } } int acntid = Model.AcntId; }

      添加

      @using (Ajax.BeginForm("ShipAdd", new AjaxOptions() { OnSuccess = "onSuccess(acntid)", UpdateTargetId = "ShipAdd", HttpMethod = “发布”})) 继续。
    • 继续。 Intellisense 表示函数、结果和窗口不在上下文中。这也是传递参数的正确方法吗?谢谢
    • var onSucess 需要在
    • 我发布了一个关于如何传递路由值stackoverflow.com/questions/12417668/…的新问题
    猜你喜欢
    相关资源
    最近更新 更多
    热门标签