Saya tahu ini tidak benar, tetapi demi ilustrasi saya ingin melakukan sesuatu seperti ini:
<%= Html.Button("Action", "Controller") %>
Tujuan saya adalah membuat tombol HTML yang akan memanggil metode tindakan pengontrol MVC saya.
Saya tahu ini tidak benar, tetapi demi ilustrasi saya ingin melakukan sesuatu seperti ini:
<%= Html.Button("Action", "Controller") %>
Tujuan saya adalah membuat tombol HTML yang akan memanggil metode tindakan pengontrol MVC saya.
Jawaban:
Tidak perlu menggunakan formulir sama sekali kecuali Anda ingin memposting ke tindakan. Tombol input (tidak mengirimkan) akan melakukan trik.
<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 }) %>'" />
Sintaks silet ada di sini:
<input type="button" value="Create" onclick="location.href='@Url.Action("Create", "User")'" />
'input'menjadi 'button'dan yang menyelesaikan kesalahan.
<button type="button" class="btn btn-primary" onclick="location.href='@Url.Action("action", "controller")'" >Go Somewhere Else</button>melakukan trik
<button type="button" onclick="location.href='@Url.Action("MyAction", "MyController")'" />
type = "button" mencegah halaman mengirim. alih-alih itu melakukan tindakan Anda.
Coba ini:
@Html.ActionLink("DisplayText", "Action", "Controller", route, attribute)
Ini seharusnya bekerja untuk Anda.
Anda dapat menggunakan Url.Action untuk menentukan menghasilkan url ke tindakan pengontrol, sehingga Anda bisa menggunakan salah satu dari berikut ini:
<form method="post" action="<%: Url.Action("About", "Home") %>">
<input type="submit" value="Click me to go to /Home/About" />
</form>
atau:
<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>
Ini adalah bagaimana Anda bisa mengirimkan formulir Anda ke pengontrol dan metode tindakan tertentu di Razor.
<input type="submit" value="Upload" onclick="location.href='@Url.Action("ActionName", "ControllerName")'" />
Membangun beberapa jawaban di atas, Anda bisa melakukan ini:
<button onclick="location.href='@Url.Action("ActionName", "ControllerName")'" />
Dalam kasus jika Anda mendapatkan kesalahan sebagai "konstanta string tak tertentu", gunakan sintaks silet berikut:
<input type="button" onclick="@("location.href='"+ Url.Action("Index","Test")+ "'")" />
Meskipun Metode onclick Anda juga dapat menggunakan formaction sebagai berikut:
<button type="submit" id="button1" name="button1" formaction='@Url.Action("Action", "Controller")'>Save</button>
lebih baik gunakan contoh ini
<a href="@Url.Action("Register","Account", new {id=Item.id })"
class="btn btn-primary btn-lg">Register</a>
Saat Anda menerapkan tindakan di controller, gunakan
return View("Index");
atau
return RedirectToAction("Index");
di mana halaman Index.cshtml (atau halaman yang menghasilkan tindakan) sudah ditentukan. Kalau tidak, Anda kemungkinan mengalami kesalahan "tampilan atau masternya tidak ditemukan ...".
Sumber: https://blogs.msdn.microsoft.com/aspnetue/2010/09/17/best-practices-for-asp-net-mvc/
Gunakan contoh ini:
<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>
Jika Anda berada di beranda ("/ Beranda / Indeks") dan Anda ingin memanggil tindakan Indeks pengontrol Admin, berikut ini akan bekerja untuk Anda.
<li><a href="/Admin/Index">Admin</a></li>
lebih baik gunakan contoh ini .
Panggilan aksi dan pengontrol menggunakan ActionLink:
@Html.ActionLink("Submit", "Action", "Controller", route, new { @class = "btn btn-block"})
OK, pada dasarnya Anda perlu meneruskan aksi ke tombol dan menyebutnya ketika klik terjadi, itu tidak perlu di dalam dari, Anda dapat menggunakan HTML onclickpada tombol untuk memicu ketika tombol diklik ...
<button id="my-button" onclick="location.href='@Url.Action("YourActionName", "YourControllerName")'">Submit</button>
Anda selalu dapat bermain-main dengan htmlHelpers dan membuat beberapa hal
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);
}
}
Dan kemudian pada tampilan panggil seperti ini
@Html.BtnWithAction("btnCaretakerBack", "Back", "btn btn-primary float-right", "Index", "Caretakers")