0

モデルに関係のないいくつかのフィールドを含むMVCフォームがあります。これらのフィールドには、ユーザーが指定したクレジットカード情報が含まれています。ユーザーがフォームに入力して[続行]をクリックしたら、コントローラーでクレジットカードの検証を実行します。クレジットカードの取引が成功した場合、私は他のモデル関連のフィールドに注意を払い、ユーザーを[完了/確認]ページに移動します。それだけはうまくいきます。

ただし、クレジットカードの取引が失敗した場合は、基本的に、モデルとは関係のないこれらのクレジットカードのフィールドであっても、すべてのフィールドに入力したままユーザーを同じページに表示したいと思います。フォーム上のすべてのフィールドが消去されているように見えるため、これは困難であることが証明されています。

どんな助けでも大歓迎です。これが私のフォームコントロールのいくつかです:

<tr>
    <td>ccFieldA:</td>
    <td>
        <%= Html.TextBox("ccFieldA") %>
    </td>
    <td>
        <label id="ccFieldAError" runat="server"></label>
        <%= Html.Hidden("hiddenFieldA") %>
    </td>
</tr>
<tr>
    <td>ccFieldB:</td>
    <td><%= Html.TextBox("ccFieldB") %></td>
    <td>
        <label id="ccFieldBError" runat="server"></label>
        <%= Html.Hidden("hiddenFieldB") %>
    </td>
</tr>

次に、コントローラーで、form-submitで次のようなことを行います。

if (CreditCardPassesValidation()) {
    return RedirectToAction("NextPage", new { id = myID });
}
else {
    return View(ThisSamePage);
}
4

1 に答える 1

1

基本的に、フォームのビューモデルを作成する必要があります。また、アクションでトランザクションが成功しなかった場合は、そのビューモデルをビューに戻すことができます。そして、ビューでは、このようなHTMLヘルパーを使用する必要があります。

<%= Html.TextBoxFor(model=>model.ccFieldA) %>

アクションでは、次のようにビューモデルを返すことができます。

public ActionResult YourAction(YourViewModel model)
    {
       if (CreditCardPassesValidation()) {
            return RedirectToAction("NextPage", new { id = myID });
       }
       else {
             return View(ThisSamePage,model);
       }
    }
于 2011-12-20T03:28:33.270 に答える