ホームページ > バックエンド開発 > C++ > ASP.NET MVCフォームの複数の送信ボタンを処理する方法は?

ASP.NET MVCフォームの複数の送信ボタンを処理する方法は?

DDD
リリース: 2025-02-01 10:51:09
オリジナル
177 人が閲覧しました

How to Handle Multiple Submit Buttons in ASP.NET MVC Forms?

ASP.NET MVC

の複数の提出ボタンを処理します

この記事では、同じ形式で複数の提出ボタンを管理する方法について説明します。次のHTMLコードを考えてみましょう。これは、2つの提出ボタン「送信」と「キャンセル」を含むフォームを定義します。

一般に、ASP.NET MVCのフォームを処理する場合、フレームワークはボタンの名前に依存して、実行される関連する操作方法を決定します。ただし、上記の複数のボタンの場合、この方法は難しくなります。
<code>(此处应插入包含两个提交按钮的表单HTML代码示例)</code>
ログイン後にコピー
この問題を解決するために、この記事では、

と呼ばれるカスタム属性を提案します。この属性は、操作の処理プロセスを傍受し、導入された要求が特定の送信ボタンから派生しているかどうかを評価するために使用されます。一致するアイテムを見つけた場合は、対応する操作方法を識別して呼び出します。

MultipleButtonAttribute2つのパラメーターを受け入れます。

属性は、送信ボタンの名前を識別するために使用され、
<code class="language-csharp">[AttributeUsage(AttributeTargets.Method, AllowMultiple = false, Inherited = true)]
public class MultipleButtonAttribute : ActionNameSelectorAttribute
{
    public string Name { get; set; }
    public string Argument { get; set; }

    public override bool IsValidName(ControllerContext controllerContext, string actionName, MethodInfo methodInfo)
    {
        bool isValidName = false;
        string keyValue = string.Format("{0}:{1}", Name, Argument);
        ValueProviderResult value = controllerContext.Controller.ValueProvider.GetValue(keyValue);

        if (value != null)
        {
            controllerContext.Controller.ControllerContext.RouteData.Values[Name] = Argument;
            isValidName = true;
        }

        return isValidName;
    }
}</code>
ログイン後にコピー
属性はボタンに関連付けられた値を表します。

MultipleButtonAttribute を使用するには、フォームのHTMLコードを変更して、属性名とパラメーター値を含めるように変更する必要があります。たとえば、Name Argument コントローラーでは、対応する操作方法をNameで装飾し、正しいArgumentおよび

値:

で装飾する必要があります。 MultipleButtonAttribute この方法を使用して、ASP.NET MVCフレームワークは、適切な操作方法に送信を正確にマッピングして、同じ形式の複数の提出ボタンを正しく処理できるようにすることができます。

以上がASP.NET MVCフォームの複数の送信ボタンを処理する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート