0

我一直试图让“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);
        });
    });

唯一没有发生的是页面被刷新,这是重定向应该做的。任何人都可以建议吗?

更新

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

4

2 回答 2

2

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

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

如果您想让操作控制重定向的位置,您可能希望使用 return aJsonResultContentResultfrom 您的操作与从那里输出的 URL 有 jQuery 的成功回调重定向用户。

于 2013-08-05T20:13:15.060 回答
1

假设 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
    });
});
于 2013-08-05T20:24:26.533 回答