0

我正在努力从中获得价值:

@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() )但基本上我如何从该下拉列表中获取值到我的控制器中并使用重定向正常运行控制器方法,并且我应该为我的参数使用什么变量类型?我的视图模型是强类型的,称为 InvoiceViewModel。

4

1 回答 1

0

这个问题并不完全清楚,但是,如果您使用 Ajax 请求来提交表单,那么如果不设置额外的 Javascript 以了解 HTTP 302/301 重定向,那么您的重定向将无法工作。

如果您不使用 Ajax,那么您应该更改 ActionResult 以使用与您在视图中使用的对象类型相同的对象类型:

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

ASP.NET MVC 将自动负责将 POST 中的数据绑定到对象类型。

于 2013-05-06T19:53:06.967 回答