【问题标题】:Trying to refresh page using Jquery post and ActionResult尝试使用 Jquery 帖子和 ActionResult 刷新页面
【发布时间】:2013-08-06 16:02:45
【问题描述】:

我一直试图让“RedirecttoAction”语句在这里工作,但它没有让步。方法如下:

    [HttpPost]
    public ActionResult UpdateTech(int tech, int id)
    {
        Callout callout = db.Callouts.Find(id);
        callout.TechnicianId = tech;
        callout.TechStatus = "ASSIGNED";
        db.Entry(callout).State = EntityState.Modified;
        db.SaveChanges();
        return RedirectToAction("CalloutAdmin/Index/");
    }

它由以下JQuery调用,完美运行:

$(function () {
        $(".techdropdown").change(function () {
            var recordToUpdate = $(this).attr("id");
            var selectedTech = $(".techdropdown option:selected").val();
            window.alert(selectedTech);
            $.post("/CalloutAdmin/UpdateTech?tech=" + selectedTech + "&id=" + recordToUpdate);
        });
    });

唯一没有发生的是页面被刷新,这是重定向应该做的。谁能给点建议?

更新

我想要做的是更新这个 Callout 对象,而不重定向到另一个视图。我从下拉列表中选择了一名技术人员,它会自动将标注的技术人员值设置为我从下拉列表中选择的值。

【问题讨论】:

  • 您能否准确解释一下您想要达到的目标,因为我觉得您可能在某个地方感到困惑。如果您想重定向页面,您不需要使用 jQuery 的 AJAX 加载吗?我会添加一个我相信对你有用的答案,但如果你能在你的问题中提供更多细节,那会有所帮助

标签: javascript jquery asp.net-mvc-4 http-post redirecttoaction


【解决方案1】:

您将重定向返回到 AJAX 请求,而 AJAX 请求正在后台加载页面。如果你想让整个页面重定向你可能想在 jQuery 中使用成功回调

$.post("/CalloutAdmin/UpdateTech?tech=" + selectedTech + "&id=" + recordToUpdate, function() { document.location = "CalloutAdmin/Index/"; } );

如果你想让动作控制重定向的位置,你可能希望使用从你的动作中返回一个JsonResultContentResult,从那里输出的 URL 有 jQuery 的成功回调重定向用户。

【讨论】:

    【解决方案2】:

    假设 UpdateTech 和 Index 都属于 CallOutAdminController 然后将您的 UpdateTech 方法更改为如下所示:

    [HttpPost]
    public ActionResult UpdateTech(int tech, int id)
    {
        Callout callout = db.Callouts.Find(id);
        callout.TechnicianId = tech;
        callout.TechStatus = "ASSIGNED";
        db.Entry(callout).State = EntityState.Modified;
        db.SaveChanges();
        return RedirectToAction("Index","CallOutAdmin");
    }
    

    然后让你的jQuery函数像这样:

    $(document).ready(function(e) {
        $(".techdropdown").change(function () {
            var recordToUpdate = $(this).attr("id");
            var selectedTech = $(".techdropdown option:selected").val();
            window.alert(selectedTech);
            window.location = "/CallOutAdmin/UpdateTech?tech=" + selectedTech + "&id=" + recordToUpdate
        });
    });
    

    【讨论】:

    • window.location = "/CalloutAdmin/UpdateTech?tech=" + selectedTech + "&id=" + recordToUpdate 没用,它告诉我找不到方法 UpdateTech
    • 那么 UpdateTech 在 CallOutAdmin 的控制器中不存在...尝试根据您的设置将“/CalloutAdmin/UpdateTech?tech=”更新为“/CallOutAdmin/UpdateTech?tech=”区分大小写。
    猜你喜欢
    • 1970-01-01
    • 2013-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多