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 リクエストを使用してフォームを送信している場合、HTTP 302/301 リダイレクトを認識するように追加の Javascript を設定しないと、リダイレクトは機能しません。

Ajax を使用していない場合は、ビューで使用しているのと同じオブジェクト タイプを使用するように ActionResult を変更する必要があります。

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

ASP.NET MVC は、POST 内のデータをオブジェクト型にバインドすることを自動的に処理します。

于 2013-05-06T19:53:06.967 に答える