ビューに関連付けられたActionResult
クラスのController
メソッドを呼び出して、フォーム内のボタンを処理する基本的なフォームがあります。フォームの次のHTML5コードは次のとおりです。
<h2>Welcome</h2>
<div>
<h3>Login</h3>
<form method="post" action= <!-- what goes here --> >
Username: <input type="text" name="username" /> <br />
Password: <input type="text" name="password" /> <br />
<input type="submit" value="Login">
<input type="submit" value="Create Account"/>
</form>
</div>
<!-- more code ... -->
対応するController
コードは次のとおりです。
[HttpPost]
public ActionResult MyAction(string input, FormCollection collection)
{
switch (input)
{
case "Login":
// do some stuff...
break;
case "Create Account"
// do some other stuff...
break;
}
return View();
}
hTMLヘルパーを使用して、
_ @using(Html.BeginForm())
{
Username: <input type="text" name="username" /> <br />
Password: <input type="text" name="password" /> <br />
<input type="submit" value="Login">
<input type="submit" value="Create Account"/>
}
_
または、URLヘルパーを使用します
_<form method="post" action="@Url.Action("MyAction", "MyController")" >
_
_Html.BeginForm
_には、いくつかの(13)オーバーライドがあり、詳細を指定できます。たとえば、ファイルのアップロード時の通常の使用では次を使用します。
_@using(Html.BeginForm("myaction", "mycontroller", FormMethod.Post, new {enctype = "multipart/form-data"}))
{
< ... >
}
_
引数を指定しない場合、Html.BeginForm()
は、現在のコントローラーと現在のアクションを指すのPOST
形式を作成します。例として、Posts
というコントローラーとDelete
というアクションがあるとします。
_public ActionResult Delete(int id)
{
var model = db.GetPostById(id);
return View(model);
}
[HttpPost]
public ActionResult Delete(int id)
{
var model = db.GetPostById(id);
if(model != null)
db.DeletePost(id);
return RedirectToView("Index");
}
_
あなたのhtmlページは次のようになります:
_<h2>Are you sure you want to delete?</h2>
<p>The Post named <strong>@Model.Title</strong> will be deleted.</p>
@using(Html.BeginForm())
{
<input type="submit" class="btn btn-danger" value="Delete Post"/>
<text>or</text>
@Url.ActionLink("go to list", "Index")
}
_
ここでは、基本的にリンクにボタンをラップしています。利点は、同じフォームで異なるアクションメソッドに投稿できることです。
<a href="Controller/ActionMethod">
<input type="button" value="Click Me" />
</a>
パラメーターの追加:
<a href="Controller/ActionMethod?userName=ted">
<input type="button" value="Click Me" />
</a>
非列挙モデルからのパラメーターの追加:
<a href="Controller/[email protected]">
<input type="button" value="Click Me" />
</a>
列挙型モデルでも同じことができます。最初に単一のエンティティを参照する必要があります。ハッピーコーディング!