Я знаю, що це неправильно, але заради ілюстрації я хотів би зробити щось подібне:
<%= Html.Button("Action", "Controller") %>
Моя мета - зробити кнопку HTML, яка викликатиме метод дії мого контролера MVC.
Я знаю, що це неправильно, але заради ілюстрації я хотів би зробити щось подібне:
<%= Html.Button("Action", "Controller") %>
Моя мета - зробити кнопку HTML, яка викликатиме метод дії мого контролера MVC.
Відповіді:
Не потрібно використовувати форму взагалі, якщо ви не хочете опублікувати в дії. Кнопка введення (не надсилати) зробить трюк.
<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")'" />
У випадку, якщо ви отримуєте помилку як "невстановлена константа рядка", використовуйте наступний синтаксис бритви:
<input type="button" onclick="@("location.href='"+ Url.Action("Index","Test")+ "'")" />
краще використовувати цей приклад
<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, ви також можете використовувати формацію наступним чином:
<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") і хочете зателефонувати в індексну дію контролера адміністратора, наступне буде працювати для вас.
<li><a href="/Admin/Index">Admin</a></li>
краще використовувати цей приклад .
Дія виклику та контролер за допомогою ActionLink
:
@Html.ActionLink("Submit", "Action", "Controller", route, new { @class = "btn btn-block"})
Гаразд, вам в основному потрібно передати дію кнопці та викликати її, коли відбувається натискання, вона не повинна знаходитися всередині з, ви можете використовувати кнопку HTML onclick
на кнопці, щоб запустити її, коли натиснути кнопку ...
<button id="my-button" onclick="location.href='@Url.Action("YourActionName", "YourControllerName")'">Submit</button>
Ви завжди можете пограти з 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")