にそれが呼び出されていないではない方法に混乱もうMVC 6です。今はASP.NET Core 1.0です。 runat = "server"は、Webフォームをサポートしていないので、ASP.NET Core 1.0では使用されず、代わりにMVCパラダイムに依存しています。同じ理由で、onclick属性もありません。
だからボタンは次のようになります。
<button type="submit" class="btn btn-default">Click Here</button>
とコントローラのアクションメソッドは、次のようになります。
で
[HttpPost]
public IActionResult Post() {
/*do work here*/
return View();
}
全例
コミッフォームに複数のボタンがあった場合、どのボタンがクリックされたかをどのように表示するかの例を尋ねました。次に例を示します。
/Views/example/index.cshtml
<html>
<body>
<form asp-controller="example" asp-action="Index">
<label>Value:</label><input name="someValue" type="text" maxlength="10" />
<button name="btnOne" type="submit" class="btn btn-default">Click One</button>
<button name="btnTwo" type="submit" class="btn btn-default">Click Two</button>
</form>
</body>
</html>
/Controllers/example/ExampleController.cs
using Microsoft.AspNetCore.Mvc;
namespace App.Web.Controllers {
public class ExampleController: Controller {
public ExampleController() {
}
[HttpGet]
[Route("/example/")]
public IActionResult Index() {
return View();
}
[HttpPost]
[Route("/example/")]
public IActionResult Index(string someValue) {
string buttonClicked = "";
if(HttpContext.Request.Form.ContainsKey("btnOne")) {
buttonClicked = "btnOne";
} else if(HttpContext.Request.Form.ContainsKey("btnTwo")) {
buttonClicked = "btnTwo";
}
return View("Index");
}
}
}
あなたはについての詳細を学ぶことができますASP.NET Coreのフォームはここにあります:https://docs.microsoft.com/en-us/aspnet/core/mvc/views/working-with-forms
ebformsでも学習曲線は最初は少し急である。
興味深いので、runat = serverはありませんが、このタスクをフックする(IActionresult Post)[HttpPost]というリダイレクタがあります。私はあなたがあなたの事例でどれが押されたかをどのように検出すればよいのか、異なる行動のための複数のボタンを持っているのだろうか? – user3800527
通常、アクションメソッド名には、処理するビューの名前(この場合はPost)が反映されるため、通常はビュー(別名ページ)に固定されます。どのボタンがクリックされたのかを知るには、ボタンの名前属性を使ってボタンに名前をつけ、残りのフォームデータにその名前がポストバックされ、その名前の存在を確認することができますボタンをクリックしました。 –
ありがとう、私はasp.netのコアを勉強していますが、このコンセプトを理解するのが難しいと思うかもしれません。ちょうどあなたの最後のコメントで説明したものが示されている小さなサンプルかもしれません。 – user3800527