フォームで複数の送信ボタンを処理するための良いトリックを探していましたが、この URL からアドバイスを得て、フォローしましたが失敗しました。 ASP.NET MVC フレームワークで複数の送信ボタンをどのように処理しますか?
@Andrey Shchekinによって投稿されました。
彼はちょうど以下のようなクラスを作成すると言ったので、同じコントローラーで行いました
public class HttpParamActionAttribute : ActionNameSelectorAttribute {
public override bool IsValidName(ControllerContext controllerContext, string actionName, MethodInfo methodInfo) {
if (actionName.Equals(methodInfo.Name, StringComparison.InvariantCultureIgnoreCase))
return true;
if (!actionName.Equals("Action", StringComparison.InvariantCultureIgnoreCase))
return false;
var request = controllerContext.RequestContext.HttpContext.Request;
return request[methodInfo.Name] != null;
}
}
次に、ビューの複数の送信ボタンは次のようになり、コントローラーコードも次のようになります
<% using (Html.BeginForm("Action", "Post")) { %>
<!— …form fields… -->
<input type="submit" name="saveDraft" value="Save Draft" />
<input type="submit" name="publish" value="Publish" />
<% } %>
and controller with two methods
public class PostController : Controller {
[HttpParamAction]
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult SaveDraft(…) {
//…
}
[HttpParamAction]
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Publish(…) {
//…
}
}
しかし、彼のコードをテストしてもうまくいきません。そのため、私がどこで間違いを犯しているのか、コード自体が状況を処理するのに間違っているのかを教えてくれます。ありがとう