我知道这是不对的,但为了说明,我想做这样的事情:
<%= Html.Button("Action", "Controller") %>
我的目标是制作一个HTML按钮,它将调用我的MVC控制器的动作方法。
答案 0 :(得分:240)
除非您想要发布操作,否则根本不需要使用表单。输入按钮(不提交)将起到作用。
<input type="button"
value="Go Somewhere Else"
onclick="location.href='<%: Url.Action("Action", "Controller") %>'" />
答案 1 :(得分:213)
Razor语法在这里:
<input type="button" value="Create" onclick="location.href='@Url.Action("Create", "User")'" />
答案 2 :(得分:61)
<button type="button" onclick="location.href='@Url.Action("MyAction", "MyController")'" />
type =&#34;按钮&#34; 阻止页面提交。相反,它会执行你的行动。
答案 3 :(得分:15)
您可以使用Url.Action指定生成控制器操作的网址,因此您可以使用以下任一方法:
<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>
答案 4 :(得分:14)
试试这个:
@Html.ActionLink("DisplayText", "Action", "Controller", route, attribute)
这应该适合你。
答案 5 :(得分:8)
基于上述几个答案,您可以这样做:
<button onclick="location.href='@Url.Action("ActionName", "ControllerName")'" />
答案 6 :(得分:8)
这是您可以将表单提交到Razor中的特定控制器和操作方法的方法。
<input type="submit" value="Upload" onclick="location.href='@Url.Action("ActionName", "ControllerName")'" />
答案 7 :(得分:6)
HTML <button>
元素只能回发到包含它的表单。
因此,您需要制作一个POST表单,然后在表单中添加<button>
或<input type="submit" />
。
答案 8 :(得分:5)
如果您收到“未终止的字符串常量”错误,请使用以下razor语法:
<input type="button" onclick="@("location.href='"+ Url.Action("Index","Test")+ "'")" />
答案 9 :(得分:4)
在控制器中实施操作时,请使用
return View("Index");
或
return RedirectToAction("Index");
其中已定义了Index.cshtml(或生成操作的页面)页面。否则你可能会遇到&#34;未找到视图或其主人......&#34;错误。
来源:https://blogs.msdn.microsoft.com/aspnetue/2010/09/17/best-practices-for-asp-net-mvc/
答案 10 :(得分:4)
尽管有onclick方法,你也可以使用格式化如下:
<button type="submit" id="button1" name="button1" formaction='@Url.Action("Action", "Controller")'>Save</button>
答案 11 :(得分:3)
所以,我正在使用Razor,但这可以使用任何一种。我基本上是在链接中包含一个按钮。
<a href="Controller/ActionMethod">
<input type="button" value="Click Me" />
</a>
答案 12 :(得分:3)
它更好地使用这个例子
<a href="@Url.Action("Register","Account", new {id=Item.id })"
class="btn btn-primary btn-lg">Register</a>
&#13;
答案 13 :(得分:1)
好的,你基本上需要将操作传递给按钮并在点击发生时调用它,它不需要在一个内部,你可以使用HTML {{1}点击按钮时触发按钮 ...
+CMTI: SM,<old used space>
答案 14 :(得分:1)
如果您在主页(&#34; / Home / Index&#34;)并且您想调用管理员控制器的索引操作,则以下内容适用于您。
<li><a href="/Admin/Index">Admin</a></li>
答案 15 :(得分:1)
在所有建议中,nobdy使用了razor语法(这也具有引导程序样式)。这将使一个按钮重定向到“帐户”控制器中的“登录”视图:
<form>
<button class="btn btn-primary" asp-action="Login" asp-
controller="Account">@Localizer["Login"]</button>
</form>
答案 16 :(得分:0)
最好使用此示例。
使用ActionLink
调用操作和控制器:
@Html.ActionLink("Submit", "Action", "Controller", route, new { @class = "btn btn-block"})
答案 17 :(得分:0)
使用此示例:
<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>
答案 18 :(得分:0)
您始终可以使用htmlHelpers并构建一些东西
public static IHtmlContent BtnWithAction(this IHtmlHelper htmlHelper, string id, string text, string css="", string action="", string controller="")
{
try
{
string str = $"<button id=\"{id}\" class=\"{css}\" type=\"button\" ###>{text}</button>";
if (!string.IsNullOrEmpty(action) && !string.IsNullOrEmpty(controller))
{
string url = ((TagBuilder)htmlHelper.ActionLink("dummy", action, controller)).Attributes["href"];
var click = !string.IsNullOrEmpty(url) ? $"onclick=\"location.href='{url}'\"" : string.Empty;
return new HtmlString(str.Replace("###", click));
}
return new HtmlString(str.Replace("###", string.Empty));
}
catch (Exception ex)
{
Log.Error(ex, ex.Message);
var fkup = "<script>alert(\"assumption is the mother of all failures\")</script>";
return new HtmlString(fkup);
}
}
然后在视图上这样称呼
@Html.BtnWithAction("btnCaretakerBack", "Back", "btn btn-primary float-right", "Index", "Caretakers")