2

私はmvcが初めてです。私はこの方法で複数の送信ボタンを同じフォームで処理できることを知っています。

<%
 using (Html.BeginForm("LoginRegistration", new { action = "LoginRegistration", controller = "Register"}, FormMethod.Post, new { @class = "form", id = "formId" }))
    {
     %>
        //your html code here
        <input type="submit" name="submitButton" value="Login"/>
        <input type="submit" name="submitButton" value="Register"/>
<% }%>

[HttpPost]
        public ActionResult LoginRegistration(string submitButton)
        {
            switch (submitButton)
            {
                case "Login":
                    return RedirectToAction("Login");
                case "Register":
                    return RedirectToAction("Register");
                default:
                    return null;
            }
        }

私の場合、すべての送信ボタンにsubmitButtonというボタン名を付ける必要がありますが、すべての送信ボタンに別の名前を付けたいです。出来ますか?

この状況を処理する他の方法があるかどうかを知りたいです。したがって、この状況を処理するために、サンプル コードを使用して他の方法で議論してください。ありがとう

アップデート

別の人が同じ問題を以下の方法で扱っているのを見ました。コードは示されていますが、彼のトリックがわかりません。彼は 1 つの送信ボタンに 1 つの非表示フィールドを追加します...なぜですか? 彼はボタンの値のプロパティを true に設定し、対応する非表示フィールドの値のプロパティを false に設定しました...なぜ私はこのトリックを理解できなかったのですか。

もう 1 つの問題は、アクション メソッドがいつ呼び出されるか、次に bool 値がどのように渡され、どのコントロールの bool 値が渡されるかということです。この更新されたコードを調べて、このコードがどのように機能するかを詳細に説明してください。ありがとう

<%
 using (Html.BeginForm("LoginRegistration", new { action = "LoginRegistration", controller = "Register"}, FormMethod.Post, new { @class = "form", id = "formId" }))
    {
     %>
        //your html code here
        <button type="submit" name="login" value="true">Login</button>
        <input type="hidden" name="login" value="false"/>
        <button type="submit" name="register" value="true">Register</button>
        <input type="hidden" name="register" value="false"/>
<% }%>

[HttpPost]
        public ActionResult LoginRegistration(bool login, bool register)
        {
           if (login) return RedirectToAction("Login");
           else if (register) return RedirectToAction("Register");
        }

アップデート

私の見方はどのように見えるか

<div id="mydiv">
    @using (Html.BeginForm("MultipleSubmitBtn", "MultipleSubmitBtn", FormMethod.Post, new { @Id = "Form1" }))
        {
            <table border="0">

                <tr>
                    <td colspan="2">
                    <button type="submit" id="b1" value="true"> 1 </button>
                    <button type="submit" id="b2" value="true"> 2 </button>
                    <button type="submit" id="b3" value="true"> 3 </button>
                    <button type="submit" id="b4" value="true"> 4 </button>
                    <button type="submit" id="b5" value="true"> 5 </button>

                    <input type="hidden" id="b1" value="false" />
                    <input type="hidden" id="b2" value="false" />
                    <input type="hidden" id="b3" value="false" />
                    <input type="hidden" id="b4" value="false" />
                    <input type="hidden" id="b5" value="false" />
                    </td>
                </tr>
            </table>
        }
</div>

コントローラーコード

public class MultipleSubmitBtnController : Controller
    {
        [HttpPost]
        public ActionResult MultipleSubmitBtn(string b1, string b2, string b3, string b4, string b5)
        {
            return View();
        }

    }

この構文のように使用すると、エラーが発生しました

 public ActionResult MultipleSubmitBtn(string? b1, string? b2, string b3?, string b4?, string b5?) 

コードを確認して、なぜ機能しないのか教えてください。ありがとう

4

3 に答える 3

2

答えるのが少し遅いことはわかっていますが、まだ試しています.... :)

それを行うためのより洗練された方法は、ActionNameAttribute とカスタム ActionMethodSelectorAttribute (ActionMethodSelectorAttribute から派生) を使用することだと思います。実装は非常に簡単です。

必要に応じて、次のリンクにアクセスしてください: http://programersnotebook.blogspot.in/2014/02/aspnet-mvc-actionnameselector-and.htmlhttp://programersnotebook.blogspot.in/2014/02/aspnet-mvc -actionnameselector-and_2.html

于 2014-02-04T02:23:01.473 に答える