web-dev-qa-db-ja.com

MVCコントローラとアクションメソッドを呼び出すHTMLボタン

私はこれが正しくないことを知っています、しかし実例のために私はこのようなことをしたいのですが:

<%= Html.Button("Action", "Controller") %>

私の目標は、MVCコントローラーのアクションメソッドを呼び出すHTMLボタンを作成することです。

170
Aaron Salazar

アクションに投稿したいのでなければ、フォームを使用する必要はまったくありません。入力ボタン(送信しない)でうまくいくでしょう。

  <input type="button"
         value="Go Somewhere Else"
         onclick="location.href='<%: Url.Action("Action", "Controller") %>'" />
241
Cheddar

かみそりの構文は次のとおりです。

<input type="button" value="Create" onclick="location.href='@Url.Action("Create", "User")'" />
214
Babul Mirdha
<button type="button" onclick="location.href='@Url.Action("MyAction", "MyController")'" />

type = "button"は、ページが送信されないようにします。代わりにそれはあなたの行動を実行します。

61
Amir Chatrbahr

Url.Actionを使用してコントローラアクションに対するURLを生成するように指定できます。そのため、次のいずれかを使用できます。

<form method="post" action="<%: Url.Action("About", "Home") %>">
   <input type="submit" value="Click me to go to /Home/About" />
</form>

または

<form action="#">
  <input type="submit" onclick="parent.location='<%: Url.Action("About", "Home") %>';return false;" value="Click me to go to /Home/About" />
  <input type="submit" onclick="parent.location='<%: Url.Action("Register", "Account") %>';return false;" value="Click me to go to /Account/Register" />
</form>
15
Jon Galloway

これを試して:

@Html.ActionLink("DisplayText", "Action", "Controller", route, attribute)

これでうまくいくはずです。

14
Sunny Okoro Awa

上記のいくつかの答えに基づいて、あなたはこれを行うことができます:

<button onclick="location.href='@Url.Action("ActionName", "ControllerName")'" />
9
usefulBee

これが、Razorの特定のコントローラとアクションメソッドにフォームを送信する方法です。

 <input type="submit" value="Upload" onclick="location.href='@Url.Action("ActionName", "ControllerName")'" />
8
Debendra Dash

HTMLの<button>要素は、それを含むフォームにしかポストバックできません。

したがって、アクションにPOSTするフォームを作成し、そのフォームに<button>または<input type="submit" />を入れる必要があります。

6
SLaks

"unterminated string constant"としてエラーが発生した場合は、以下のカミソリ構文を使用してください。

<input type="button" onclick="@("location.href='"+ Url.Action("Index","Test")+ "'")" />
5
Gaurav Joshi

コントローラにアクションを実装するときは、

return View("Index");

または

return RedirectToAction("Index");

index.cshtml(またはアクションを生成するページ)pageはすでに定義されています。そうでなければ、 "ビューまたはそのマスターが見つかりません..."というエラーが発生する可能性があります。

ソース: https://blogs.msdn.Microsoft.com/aspnetue/2010/09/17/best-practices-for-asp-net-mvc/

4
HappyCoder

Onclickメソッドにもかかわらず、次のようにformactionを使うこともできます。

<button type="submit" id="button1" name="button1" formaction='@Url.Action("Action", "Controller")'>Save</button>
4
Rahul Bhat

この例を使うほうがいい

<a href="@Url.Action("Register","Account", new {id=Item.id })"
class="btn btn-primary btn-lg">Register</a>
3
Alex Siela

だから、私はRazorを使っていますが、これはどちらを使っても動作します。私は基本的にリンクの中にボタンをラップしています。

<a href="Controller/ActionMethod">
    <input type="button" value="Click Me" />
</a>
3
jade290

あなたがホームページ( "/ Home/Index")にいて、あなたがAdminコントローラのIndexアクションを呼び出したいのであれば、以下はあなたのために働きます。

<li><a href="/Admin/Index">Admin</a></li>
1
Pabitra Dash

OK、基本的にはボタンにアクションを渡してクリックが発生したときに呼び出す必要があります。fromの内側にある必要はありません。 ボタンがクリックされたときにそれを起動するには、HTML onclick onボタンを使います。 ..

<button id="my-button" onclick="location.href='@Url.Action("YourActionName", "YourControllerName")'">Submit</button>
1
Alireza

この例を使うほうがいいです

ActionLinkを使用してアクションとコントローラを呼び出します。

@Html.ActionLink("Submit", "Action", "Controller", route, new { @class = "btn btn-block"})
0
Rahul Raut

この例を使用してください。

<button name="nameButton" id="idButton" title="your title" class="btn btn-secondary" onclick="location.href='@Url.Action( "Index","Controller" new {  id = Item.id })';return false;">valueButton</button>
0
Mohamed Wardan