0

我掙扎着爬了值超出此:從Html.DropDownList發送參數不完成重定向操作?

@Html.DropDownListFor(m => m.ClientId, new SelectList(Model.Clients, "ClientId", "Name")) 
      @Html.ValidationMessageFor(model => model.ClientId) 

所以,我可以提交給本:

[HttpPost] 
public ActionResult SaveInvoice(Parameter from DropDownList) 
{ 
//code code code etc 
return RedirectToAction("Complete", new { id = invoice.InvoiceId }); 
} 

我的問題是,使用jQuery運行後簡單地執行用參數SaveInvoice方法,重定向不會發生。該重定向非常重要。我相信我在提交表單代碼的某個地方犯了一個錯誤(因爲這是使用Html.BeginForm()),但基本上我該如何從該下拉列表中獲取值到我的控制器中,並使用正常的重定向運行控制器方法,以及我應該爲我的參數使用什麼變量類型?我的viewmodel被強制類型化爲InvoiceViewModel。

回答

0

這個問題還不完全清楚,但是,如果您使用Ajax請求來提交表單,那麼如果不設置額外的Javascript來知道HTTP 302/301重定向,您的重定向將不起作用。

public ActionResult SaveInvoice(ObjectType whateverNameYouWant) { ... } 

ASP.NET MVC將自動完成做綁定:

如果你不使用Ajax,那麼你應該爲你的使用您的看法改變你的ActionResult使用相同的對象類型將POST中的數據轉換爲對象類型。

+0

對不起,我試圖避免使用ajax和jquery,並使用ASP.NET MVC提供的工具。使用JQuery等避免了MVC和html助手的重點。 – 2013-05-06 20:00:44