我知道这是不对的,但是为了说明起见,我想做这样的事情:
<%= Html.Button("Action", "Controller") %>
我的目标是制作一个HTML按钮,该按钮将调用我的MVC控制器的action方法。
我知道这是不对的,但是为了说明起见,我想做这样的事情:
<%= Html.Button("Action", "Controller") %>
我的目标是制作一个HTML按钮,该按钮将调用我的MVC控制器的action方法。
Answers:
除非您要张贴到操作中,否则根本不需要使用表格。输入按钮(不提交)可以解决问题。
<input type="button"
value="Go Somewhere Else"
onclick="location.href='<%: Url.Action("Action", "Controller") %>'" />
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)); }
<input type="button" value="Go Somewhere Else" onclick="location.href='<%: Url.Action("Action", "Controller", new { parameter1 = value1 }) %>'" />
剃刀语法在这里:
<input type="button" value="Create" onclick="location.href='@Url.Action("Create", "User")'" />
'input'
为'button'
,从而解决了该错误。
<button type="button" class="btn btn-primary" onclick="location.href='@Url.Action("action", "controller")'" >Go Somewhere Else</button>
<button type="button" onclick="location.href='@Url.Action("MyAction", "MyController")'" />
type =“ button”阻止页面提交。而是执行您的操作。
试试这个:
@Html.ActionLink("DisplayText", "Action", "Controller", route, attribute)
这应该为您工作。
您可以使用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>
这样可以将表单提交到Razor中的特定控制器和操作方法。
<input type="submit" value="Upload" onclick="location.href='@Url.Action("ActionName", "ControllerName")'" />
最好使用这个例子
<a href="@Url.Action("Register","Account", new {id=Item.id })"
class="btn btn-primary btn-lg">Register</a>
在控制器中实施操作时,请使用
return View("Index");
要么
return RedirectToAction("Index");
其中已经定义了Index.cshtml(或生成操作的页面)页面。否则,您可能会遇到“未找到该视图或其主视图...”的错误。
来源:https : //blogs.msdn.microsoft.com/aspnetue/2010/09/17/best-practices-for-asp-net-mvc/
尽管使用了onclick方法,您也可以按以下方式使用formaction:
<button type="submit" id="button1" name="button1" formaction='@Url.Action("Action", "Controller")'>Save</button>
使用以下示例:
<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>
如果您位于主页(“ / Home / Index”)中,并且希望调用Admin controller的Index操作,则可以执行以下操作。
<li><a href="/Admin/Index">Admin</a></li>
您可以随时使用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")