Tôi biết điều này không đúng, nhưng để minh họa, tôi muốn làm một cái gì đó như thế này:
<%= Html.Button("Action", "Controller") %>
Mục tiêu của tôi là tạo một nút HTML sẽ gọi phương thức hành động của bộ điều khiển MVC của tôi.
Tôi biết điều này không đúng, nhưng để minh họa, tôi muốn làm một cái gì đó như thế này:
<%= Html.Button("Action", "Controller") %>
Mục tiêu của tôi là tạo một nút HTML sẽ gọi phương thức hành động của bộ điều khiển MVC của tôi.
Câu trả lời:
Không cần phải sử dụng một hình thức nào trừ khi bạn muốn đăng lên hành động. Một nút đầu vào (không gửi) sẽ thực hiện thủ thuật.
<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 }) %>'" />
Cú pháp dao động ở đây:
<input type="button" value="Create" onclick="location.href='@Url.Action("Create", "User")'" />
'input'
thành 'button'
và điều đó đã giải quyết lỗi.
<button type="button" class="btn btn-primary" onclick="location.href='@Url.Action("action", "controller")'" >Go Somewhere Else</button>
đã thực hiện thủ thuật
<button type="button" onclick="location.href='@Url.Action("MyAction", "MyController")'" />
gõ = "nút" ngăn trang gửi. thay vào đó nó thực hiện hành động của bạn.
Thử cái này:
@Html.ActionLink("DisplayText", "Action", "Controller", route, attribute)
Điều này sẽ làm việc cho bạn.
Bạn có thể sử dụng Url.Action để chỉ định tạo url cho hành động của bộ điều khiển, do đó bạn có thể sử dụng một trong các cách sau:
<form method="post" action="<%: Url.Action("About", "Home") %>">
<input type="submit" value="Click me to go to /Home/About" />
</form>
hoặc là:
<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>
Đây là cách bạn có thể gửi biểu mẫu của mình đến một bộ điều khiển và phương thức hành động cụ thể trong Dao cạo.
<input type="submit" value="Upload" onclick="location.href='@Url.Action("ActionName", "ControllerName")'" />
Mặc dù Phương thức onclick, bạn cũng có thể sử dụng định dạng như sau:
<button type="submit" id="button1" name="button1" formaction='@Url.Action("Action", "Controller")'>Save</button>
tốt hơn nên sử dụng ví dụ này
<a href="@Url.Action("Register","Account", new {id=Item.id })"
class="btn btn-primary btn-lg">Register</a>
Khi bạn thực hiện hành động trong bộ điều khiển, hãy sử dụng
return View("Index");
hoặc là
return RedirectToAction("Index");
trong đó Index.cshtml (hoặc trang tạo hành động) đã được xác định. Nếu không, bạn có thể gặp phải lỗi "chế độ xem hoặc chủ của nó không tìm thấy ...".
Nguồn: https://bloss.msdn.microsoft.com/aspnetue/2010/09/17/best-practices-for-asp-net-mvc/
Sử dụng ví dụ này:
<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>
Nếu bạn đang ở trang chủ ("/ Trang chủ / Chỉ mục") và bạn muốn gọi hành động Index của Trình điều khiển quản trị, việc sau sẽ có hiệu quả với bạn.
<li><a href="/Admin/Index">Admin</a></li>
OK, về cơ bản bạn cần chuyển hành động cho nút và gọi nó khi nhấp xảy ra, nó không cần phải ở bên trong, bạn có thể sử dụng HTML onclick
trên nút để kích hoạt khi nút được nhấp ...
<button id="my-button" onclick="location.href='@Url.Action("YourActionName", "YourControllerName")'">Submit</button>
Bạn luôn có thể chơi xung quanh với htmlHelpers và xây dựng một số thứ
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);
}
}
Và sau đó trên quan điểm gọi nó như thế này
@Html.BtnWithAction("btnCaretakerBack", "Back", "btn btn-primary float-right", "Index", "Caretakers")