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


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

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

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


149
2018-03-23 21:56


起源


定义“呼叫”。这可能意味着AJAX调用,指向另一个页面的链接或发布表单,以列举一些可能性。 - 3Dave


答案:


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

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

212
2018-03-24 19:08



我使用了这个建议,因为它不需要表格。谢谢! - Aaron Salazar
如果我们关闭javascript它是否有效? - Bilal lilla
可以将它包装在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,Url.Action(action,controller)); } - Menahem
它在我的代码中给出了未终止的字符串常量错误 - Burak Karakuş
如果要使用该参数传递参数,则可以使用 <input type="button" value="Go Somewhere Else" onclick="location.href='<%: Url.Action("Action", "Controller", new { parameter1 = value1 }) %>'" /> - HowlinWulf


Razor语法在这里:

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

190
2018-04-06 05:38



我仍然在IDE中出现“未终止的字符串常量”错误,但仍无法正确呈现。我不得不从这里使用解决方案: stackoverflow.com/a/16420877/410937 - atconway
@atconway - 很奇怪,这对我来说确实是这个答案如何呈现的。 VS2013。 - ametren
@atconway - 有相同的错误,但更改了标签 'input' 至 'button' 并解决了错误。 - Tony Stark
使用参数<input type =“button”title =“Delete”value =“D”onclick =“location.href ='@ Url.Action(”Delete“,”movies“,new {id = item.ID})' “/> - Sandeep


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

类型=“按钮” 阻止页面提交。相反,它执行你的行动。


46
2017-10-02 02:10



只需要一个结束标签:) - Broots Waymb


您可以使用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>

14
2018-03-24 04:22





尝试这个:

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

这应该适合你。


12
2017-12-18 07:56



你也可以使用bootstrap或其他类似的css类:@ Html.ActionLink(“DisplayText”,“Action”,[“Controller”],routeValues:null,htmlAttributes:new {@ class =“btn btn-info btn-md “,style =”white-space:normal“}) - Asaf


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

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

7
2018-04-08 18:11





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

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

7
2018-02-16 19:13





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

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


5
2018-03-23 22:01





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

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

5
2018-05-26 05:48





在控制器中实现操作时,请使用

return View("Index");

要么

return RedirectToAction("Index");

其中已定义Index.cshtml(或生成操作的页面)页面。否则您可能会遇到“视图或其主人未找到...”错误。

资源: https://blogs.msdn.microsoft.com/aspnetue/2010/09/17/best-practices-for-asp-net-mvc/


4
2018-01-11 18:54