Wiem, że to nie w porządku, ale dla ilustracji chciałbym zrobić coś takiego:
<%= Html.Button("Action", "Controller") %>
Moim celem jest utworzenie przycisku HTML, który wywoła metodę działania mojego kontrolera MVC.
html
asp.net-mvc
Aaron Salazar
źródło
źródło
Odpowiedzi:
W ogóle nie musisz używać formularza, chyba że chcesz opublikować post na akcji. Przycisk wprowadzania (nie prześlij) załatwi sprawę.
źródło
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 }) %>'" />
Składnia Razor jest tutaj:
źródło
'input'
na'button'
i to rozwiązało błąd.<button type="button" class="btn btn-primary" onclick="location.href='@Url.Action("action", "controller")'" >Go Somewhere Else</button>
zrobiłem lewętype = "button" zapobiega przesyłaniu strony. zamiast tego wykonuje twoją akcję.
źródło
Spróbuj tego:
To powinno ci pomóc.
źródło
Możesz użyć Url.Action, aby określić generowanie adresu URL do akcji kontrolera, dzięki czemu możesz użyć jednej z następujących czynności:
lub:
źródło
W ten sposób możesz przesłać formularz do określonego kontrolera i metody działania w Razor.
źródło
Opierając się na kilku powyższych odpowiedziach, możesz to zrobić:
źródło
Element HTML
<button>
może jedynie wysłać zwrotnie do zawierającego go formularza.Dlatego musisz utworzyć formularz POST do akcji, a następnie wstawić a
<button>
lub<input type="submit" />
w formularzu.źródło
W przypadku pojawienia się błędu jako „niezakończonej stałej ciągu”, użyj następującej składni maszynki:
źródło
lepiej skorzystać z tego przykładu
źródło
Tak więc używam Razor, ale to będzie działać przy użyciu obu. Zasadniczo zawijam przycisk w linku.
źródło
Po zaimplementowaniu akcji w kontrolerze użyj
lub
gdzie strona Index.cshtml (lub strona, która generuje akcję) jest już zdefiniowana. W przeciwnym razie prawdopodobnie napotkasz błąd „nie znaleziono widoku lub jego wzorca…”.
Źródło: https://blogs.msdn.microsoft.com/aspnetue/2010/09/17/best-practices-for-asp-net-mvc/
źródło
Pomimo metody onclick możesz również użyć formaction w następujący sposób:
źródło
Skorzystaj z tego przykładu:
źródło
Jeśli jesteś na stronie głównej („/ Home / Index”) i chcesz wywołać akcję Indeks kontrolera administracyjnego, skorzystanie z tej opcji będzie dla Ciebie odpowiednie.
źródło
lepiej skorzystać z tego przykładu .
Wywołaj akcję i kontroler za pomocą
ActionLink
:źródło
OK, to w zasadzie trzeba przekazać skargę do przycisku i nazwać gdy kliknięcie dzieje, to nie musi znajdować się wewnątrz od, można używać HTML
onclick
na przycisku do uruchomienia go, gdy przycisk dostać kliknięciu ...źródło
Zawsze możesz bawić się przy pomocy htmlHelpers i budować różne rzeczy
A potem w widoku nazywają to tak
źródło