0

ドロップダウンリストからコントローラーメソッドにパラメーターとして値を渡そうとしています。次のコードは機能しません:

@using (Html.BeginForm())
{  
    <fieldset>
        <legend>Submit</legend>
        <div class="editor-field">
            @Html.DropDownListFor(m => m.ClientId, new SelectList(Model.Clients, "ClientId", "Name"))
            @Html.ValidationMessageFor(model => model.ClientId)
        </div>
        <p>
            <input type="submit" value="Create" />
        </p>
    </fieldset>
}

これは私のコントローラーメソッドです。

[HttpPost]
        public ActionResult SaveInvoice(string ClientId)
        {
//some code here
return RedirectToAction("SaveInvoice/Complete", new { id = invoice.InvoiceId });
        }

フォームで [送信] をクリックすると、コントローラー メソッドが起動しません。データベースに請求書を作成せず、「完了」にリダイレクトしません。私はこれについてかなり初心者なので、時間があれば、私が何をする必要があるかを注意深く説明してください. このコントローラーが起動してからリダイレクトすることが非常に重要です。皆さん、ありがとうございました。

4

2 に答える 2

2

問題はおそらく、Html.BeginForm で正しいコントローラーを指定していないことです。アクションとコントローラーを明示的に追加してみてください。(あなたのコントローラーの名前がわからないので、私は何かを発明しました。正しい値を記入してください)

@using (Html.BeginForm("SaveInvoice", "yourControllerName"))
{  
    <fieldset>
        <legend>Submit</legend>
        <div class="editor-field">
            @Html.DropDownListFor(m => m.ClientId, new SelectList(Model.Clients, "ClientId", "Name"))
            @Html.ValidationMessageFor(model => model.ClientId)
        </div>
        <p>
            <input type="submit" value="Create" />
        </p>
    </fieldset>
}

もう 1 つの可能性は、検証によってフォームの送信が停止されていることです。データが有効であることを確認します (またはバリデーターを一時的に削除します)

于 2013-05-06T21:33:43.847 に答える
1

これは、すべてのルーティングが正しく設定されていることを前提としています。ビューにパラメーターなしHtml.BeginForm()を使用すると、ロードしたのと同じアクションに投稿しています。あなたSaveInvoiceのアクションは、ページをロードしたのと同じアクションのオーバーロードではないと思います。

HTML フォームをロードするために使用しているアクションをオーバーロードするか、または のようなものを使用してみてくださいHtml.BeginForm("SaveInvoice", "{controller name here}")

于 2013-05-06T21:33:14.627 に答える