MVC - 重定向到“$ .post”之后查看控制器

时间:2017-01-05 22:13:40

标签: c# asp.net-mvc

点击按钮:

$("#newSave").click(function () {
    AddNewAccount();
});

我正在进行函数调用:

function AddNewAccount() {
    $.post("/RxCard/AddAccount",
        {
            NewAccountName: $("#newAccountName").val(),
            NewAccountAddress: $("#newAccountAddress").val(),
            NewAccountCity: $("#newAccountCity").val(),
            NewAccountState: $("#newAccountState").val(),
            NewAccountZip: $("#newAccountZip").val(),
            NewAccountArea: $("#newArea").val(),
            NewAccountPrefix: $("#newPrefix").val(),
            NewAccountSuffix:$("#newSuffix").val()

        }, function (errorMsg) {
            if (errorMsg.length > 0) {
                $('div#divSearchList').empty();
                $('div#divSearchList').html(errorMsg);
            }
            else {
                loadAccount(accountId, false);
            }
    });
    $("body").css("cursor", "default").delay(1000);
}

从那里将数据传递给控制器​​动作:

public ActionResult AddAccount(string NewAccountName, string NewAccountAddress, string NewAccountCity, string NewAccountState, string NewAccountZip, string NewAccountArea, string NewAccountPrefix, string NewAccountSuffix)
{
     DuplicatesPage model = GetDups(NewAccountName, NewAccountAddress, NewAccountCity, NewAccountState, NewAccountZip, NewAccountArea, NewAccountPrefix, NewAccountSuffix);
     return RedirectToAction("DuplicatePage", model);
}

为了生成模型(对于我试图显示的视图)来自:

private DuplicatesPage GetDups(string NewAccountName, string NewAccountAddress, string NewAccountCity, string NewAccountState, string NewAccountZip, string NewAccountArea, string NewAccountPrefix, string NewAccountSuffix)
{

    DuplicatesPage model = new DuplicatesPage();
    duplicates results = new duplicates();
    var phone = NewAccountPrefix.ToString() + NewAccountSuffix.ToString();
    var datenow = DateTime.Now;
    var firstofmonth = new DateTime(datenow.Year, datenow.Month, 1);

    OdbcCommand cmd1 = new OdbcCommand();

    cmd1.CommandText = "{call dbo.Maint_AddClinic(?,?,?,?,?,?,?,?,?)}";
    cmd1.Parameters.AddWithValue("@Name", NewAccountName);
    cmd1.Parameters.AddWithValue("@Address", NewAccountAddress);
    cmd1.Parameters.AddWithValue("@City", NewAccountCity);
    cmd1.Parameters.AddWithValue("@State", NewAccountState);
    cmd1.Parameters.AddWithValue("@Zip", NewAccountZip);
    cmd1.Parameters.AddWithValue("@AreaCode", NewAccountArea);
    cmd1.Parameters.AddWithValue("@PhoneNumber", phone);
    cmd1.Parameters.AddWithValue("@StartDate", firstofmonth);
    cmd1.Parameters.AddWithValue("@AccountTypeID", 2);
    cmd1.Parameters.AddWithValue("@IgnoreDupAddress", 1);
    DataTable dt = GetData(cmd1);
    foreach (DataRow row in dt.Rows)
    {
        Pharmacy pharmacy = new Pharmacy();
        pharmacy.AccountName = row["AccountName"].ToString();
        pharmacy.Address = row["Address"].ToString();
        pharmacy.City = row["City"].ToString();
        pharmacy.ZipCode = row["ZipCode"].ToString();
        results.Pharmacies.Add(pharmacy);
    }
    results.Count = dt.Rows.Count;
    model.DupResults = results;
    return model;
}

并结束于:

public ActionResult DuplicatePage()
{
     return View("Duplicates");
}

问题是我没有被重定向到视图Duplicates。我只是呆在同一页上。这个问题可能很明显,但我似乎无法找到它。我在单击按钮后调用AddNewAccount后尝试重定向,但当时未生成Duplicates的模型。

1 个答案:

答案 0 :(得分:1)

问题是,您使用RedirectToAction进行了AJAX来电并且永远不会有效,因为RedirectToAction会向您的{{1}返回重定向回复HTTP 302调用,你的AJAX调用不会像你期望的那样消耗这个响应,也不会发生重定向。

要解决此问题,您需要将AJAX更改为完整的帖子,或发送$.post以重定向到响应并在客户端手动重定向,然后再使用:url