ASP.NET MVCフレームワークの複数の提出ボタンASP.NETコアMVCフレームワークでは、単一のフォームで複数の提出ボタンを使用できます。これにより、クリックボタンに基づいて異なる操作の柔軟性が提供されます。
複数の提出ボタンを処理する1つの方法は、属性ベースのルートです。以下は例です:
属性:
レイザービュー:
(ここでは、「保存」と「キャンセル」という2つの提出ボタンを含むフォームを表示する実際のRazorコードを含める必要があります。元のテキストは提供されていないため、ここには追加できません。
<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>
ログイン後にコピー
コントローラー:
この設定を通じて、「保存」ボタンが「保存」操作に送信され、「キャンセル」ボタンは「キャンセル」操作に送信されます。
かみそりページの更新:
レイザーページでは、箱を開けるときに同じ機能が土地で提供されます。属性を使用せずに次の構文を使用できます。
(ここでは、実際のRazorページコードを含める必要があります。2つの送信ボタン、「保存」と「キャンセル」を含むフォームを表示し、
命令に合格する方法。元のテキストは提供されていないため、できませんここに追加されます。)<code class="language-csharp">[HttpPost]
[MultipleButton(Name = "action", Argument = "Save")]
public ActionResult Save(MessageModel mm) { /* 保存操作 */ }
[HttpPost]
[MultipleButton(Name = "action", Argument = "Cancel")]
public ActionResult Cancel(MessageModel mm) { /* 取消操作 */ }</code>
ログイン後にコピー
ページ処理プログラムでは、フォームセットの「送信ボタン」キーによって送信されたボタン値にアクセスできます。