我正在努力从中获取价值:
@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 :(得分:0)
问题并不完全清楚,但是,如果您使用Ajax请求提交表单,那么在没有设置其他Javascript以了解HTTP 302/301重定向的情况下,您的重定向将无法工作。
如果您没有使用Ajax,那么您应该更改ActionResult以使用与您在视图中使用相同的对象类型:
public ActionResult SaveInvoice(ObjectType whateverNameYouWant) { ... }
ASP.NET MVC将自动负责将POST中的数据绑定到对象类型。