0

MVC3 アプリケーションを作成しました。ビュー内には多数の HTML タグがあり、コンテンツ管理にサイトコアを使用しているため、Razor ビュー HTML タグは使用していません。( のような単純な html タグを使用しています<input type="textbox" id="">)

そして、ページの最後に というボタンがありますGET a Quote。このボタンをクリックすると、同じボタンにローダーを表示する必要があり、別のページにリダイレクトする必要があります。

リダイレクトする前に、すべてのフォーム値をキャプチャする必要があり、見積もりを計算する必要があります。つまり、Controllerメソッド/アクションでフォーム値を取得する必要があります。

誰でも私に提案できますか?これは最善の方法です?

私が知っている通り、

  1. Submitforを持つことがGET a Quoteでき、この値を Controller メソッドで取得できます。

    [HttpPost] public ActionResult(FormCollection フォーム) { }

    しかし、ここでは、送信ボタンにローダー画像を表示する方法を説明します。

  2. ハイパーGET a Quoteリンクとして作成し、すべてのフォーム値を取得するスクリプトを呼び出して、コントローラー アクション メソッドに渡すことができます。

しかしここでの問題は、いくつかのフィールドが動的に追加されることです。これらの動的に追加されたフィールドには、動的に作成されIDた . すべてのフォーム データを取得するにはどうすればよいでしょうか。

提案してください。

4

3 に答える 3

0

まあ、ajax と json を使用すると、ビューからコントローラーにデータを送信するのに役立つと思います。

 jQuery.ajax({
                url: '@Url.Action("ActionName", "ControllerName")',
                type: 'POST',
                contentType: 'application/json',
                data: JSON.stringify({ Id: Id }),
                success: function (result) { //some code }
            });

この方法を使用して、モデルなしでコントローラーにデータを渡します。

于 2013-08-24T15:39:38.637 に答える
0

要素にname属性を追加する必要があります。input

<input type="text" id="someId1" name="someName1" />
<input type="text" id="someId2" name="someName2" />
<input type="text" id="someId3" name="someName3" />
<input type="text" id="someId4" name="someName4" />

アクションが呼び出されると、FormsCollection動的に追加されたかどうかに関係なく、オブジェクトはすべての値を受け取ります。

ローダーの画像は、ajax を使って値を送信したいと考えています。そうすれば、画像が表示されるまでの時間間隔を指定できます。使用してみてください:

@using(Ajax.BeginForm("YourActionName", 
    new AjaxOptions {
        UpdateTargetId = "elementIdThatReceivesResult",
        Url = Url.Action("YourActionNameForAjaxRequests"),
        LoadingElementId = "IdOfYourLoader",
        LoadingElementDuration = 500 
    })) {
    @* Your input elements and submit. *@
}
于 2013-08-24T13:37:51.103 に答える