2017-01-05 4 views
0

をコントローラに「の$ .post」の後に表示するリダイレクト: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

問題はありませんあなたがAJAX呼び出しでRedirectToActionを使用していて、RedirectToActionがあなたのAJAXコールにリダイレクト応答HTTP 302を返しますので、それが動作することはありません、あなたが期待するとしてあなたAJAX呼び出しはこの応答を消費しないだろう、とということですリダイレクトが起こります。 window.location.href = 'new-url-to-go-to';

+0

はあなたを行います

を使用すると、使用例のため、再度ご$.post完全なポストに変更、または応答を持つにリダイレクトするurlを送信し、クライアント側で手動でリダイレクトを行うとする必要がある。この問題を解決するために、ポストバックを行う方法に関する良い記事を知っていますか?私はそれらに精通した人ではない。 – julian

+0

私はあなたの 'HTML'を見ていませんが、あなたがデータを書き込むフィールドのセットであると推測できます。もしそうなら、それらをフォームに入れ、' @ Html.BeginForm'を使ってポスト可能なフォームにしてください。のような[ここ](http://stackoverflow.com/questions/8356506/how-to-write-html-beginform-in-razor) –

関連する問題