HTML按钮调用MVC控制器和Action方法

Aar*_*zar 187 html asp.net-mvc

我知道这是不对的,但为了说明,我想做这样的事情:

<%= Html.Button("Action", "Controller") %>
Run Code Online (Sandbox Code Playgroud)

我的目标是制作一个HTML按钮,它将调用我的MVC控制器的动作方法.

小智 251

除非您想要发布操作,否则无需使用表单.输入按钮(不提交)将起作用.

  <input type="button"
         value="Go Somewhere Else"
         onclick="location.href='<%: Url.Action("Action", "Controller") %>'" />
Run Code Online (Sandbox Code Playgroud)

  • 它在我的代码中给出了未终止的字符串常量错误 (11认同)
  • 如果你想传递一个参数,你可以使用`<input type ="button"value ="Go Somewhere Else"onclick ="location.href ='<%:Url.Action("Action","Controller" ,new {parameter1 = value1})%>'"/>` (4认同)
  • 如果我们关闭JavaScript它是否有效? (2认同)
  • 可以将它包装在HtmlHelper中,例如`public static string ActionButton(this HtmlHelper helper,string action,string controller,string text){return String.Format("<input type = \"button \"value = \"{0} \"onclick = \"location.href ='{1}'/>",text,Ur.Action(action,control));}` (2认同)
  • &lt;input type="button" value="DeleteAll" onclick="location.href='@Url.Action("DeleteAll", "Home")'" /&gt; (2认同)

Bab*_*dha 228

Razor语法在这里:

<input type="button" value="Create" onclick="location.href='@Url.Action("Create", "User")'" />
Run Code Online (Sandbox Code Playgroud)

  • @atconway - 有相同的错误,但更改了标签从''input'`更改为''button'`并解决了错误. (6认同)
  • 使用参数<input type ="button"title ="Delete"value ="D"onclick ="location.href ='@ Url.Action("Delete","movies",new {id = item.ID})' "/> (5认同)
  • 我仍然在IDE中出现"未终止的字符串常量"错误,但仍无法正确呈现.我不得不从这里使用解决方案:http://stackoverflow.com/a/16420877/410937 (4认同)

Ami*_*ahr 64

<button type="button" onclick="location.href='@Url.Action("MyAction", "MyController")'" />
Run Code Online (Sandbox Code Playgroud)

type ="button"阻止页面提交.相反,它执行你的行动.


Jon*_*way 15

您可以使用Url.Action指定生成控制器操作的URL,因此您可以使用以下任一方法:

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

要么:

<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>
Run Code Online (Sandbox Code Playgroud)


Sun*_*Awa 15

试试这个:

@Html.ActionLink("DisplayText", "Action", "Controller", route, attribute)
Run Code Online (Sandbox Code Playgroud)

这应该适合你.


use*_*Bee 10

基于以上几个答案,您可以这样做:

<button onclick="location.href='@Url.Action("ActionName", "ControllerName")'" />
Run Code Online (Sandbox Code Playgroud)


niv*_*978 10

在所有建议中,nobdy 使用了 razor 语法(这也适用于引导样式)。这将创建一个重定向到帐户控制器中的登录视图的按钮:

    <form>
        <button class="btn btn-primary" asp-action="Login" asp- 
   controller="Account">@Localizer["Login"]</button>
    </form>
Run Code Online (Sandbox Code Playgroud)


Deb*_*ash 8

这就是你如何将表单提交给Razor中的特定控制器和操作方法.

 <input type="submit" value="Upload" onclick="location.href='@Url.Action("ActionName", "ControllerName")'" />
Run Code Online (Sandbox Code Playgroud)


SLa*_*aks 6

HTML <button>元素只能回发到包含它的表单.

因此,您需要创建一个POST到操作的表单,然后在表单中放置<button><input type="submit" />.


小智 5

如果您收到"未终止的字符串常量"错误,请使用以下razor语法:

<input type="button" onclick="@("location.href='"+ Url.Action("Index","Test")+ "'")" />
Run Code Online (Sandbox Code Playgroud)


jad*_*290 5

所以,我正在使用 Razor,但这也可以使用。我基本上是在链接中包装一个按钮。

<a href="Controller/ActionMethod">
    <input type="button" value="Click Me" />
</a>
Run Code Online (Sandbox Code Playgroud)


小智 5

尽管使用 onclick 方法,您还可以使用 formaction 如下:

<button type="submit" id="button1" name="button1" formaction='@Url.Action("Action", "Controller")'>Save</button>
Run Code Online (Sandbox Code Playgroud)


小智 5

最好使用这个例子

<a href="@Url.Action("Register","Account", new {id=Item.id })"
class="btn btn-primary btn-lg">Register</a>
Run Code Online (Sandbox Code Playgroud)


小智 5

使用这个例子:

<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>
Run Code Online (Sandbox Code Playgroud)