问题描述

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

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

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

最佳解决方案

除非您想要发布到该操作,否则不需要使用表单。输入按钮 (不提交) 将会做到这一点。

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

次佳解决方案

剃刀语法在这里:

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

第三种解决方案

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

type = “button” 阻止页面提交。而是执行你的行动。

第四种方案

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

第五种方案

尝试这个:

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

这应该适合你。

第六种方案

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

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

第七种方案

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

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

第八种方案

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

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

第九种方案

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

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

参考文献

注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛