Ich versuche also, diese Rasierersyntax in einer .cshtml-Ansicht in eine Hilfserweiterung in .cs umzuwandeln. Es gibt einen tollen Post hier bei Darin: https://stackoverflow.com/a/8187441/1026459. Ich habe jedoch einige Probleme damit, es zum Laufen zu bringen.Wie kann ich Html.BeginForm in einem benutzerdefinierten Helfer verwenden?
Dies ist die Ebene Auszeichnungs
@using (Html.BeginForm("Restore", "GlobalCrud"))
{
@Html.Hidden("entityId", "Id")
<input class="ui-icon ui-icon-power" type="submit"
onclick="return confirm('Clicking OK will restore this record');"
/>
}
dies der Erweiterung ist
public static MvcHtmlString EditOrDelete(this HtmlHelper html)
{
var s = html.BeginForm();
return MvcHtmlString.Create(s + " additional fields " + "</form>");
}
dies die Verwendung ist:
@using namespace.CustomHelper
@Html.EditOrDelete()
Dies ist der Ausgang:
<form method="post" action="/Completed/Manage">
System.Web.Mvc.Html.MvcForm additional fields
</form>
Die Helfer Erweiterung zum größten Teil produziert, was ich brauche. Ich bin jedoch unsicher, wie ich das zurück in eine richtige HTML-Zeichenfolge konvertieren sollte. Die Rückgabe enthält System.Web.Mvc.Html.MvcForm
im Text. Ich füge hier der Kürze halber " additional fields "
hinzu, weil es dort kein Problem gibt. Die Hinzufügung von </form>
ist dort, weil ich weiß, dass die normale using
Aussage, die mit @Html.BeginForm()
geht, das </form>
Tag hinzufügt, wenn es disposed.
Wie kann ich das von .BeginForm
generierte Formular ordnungsgemäß zurückgeben?
Danke Danke! Episch :) Ich hatte Probleme damit, tatsächlich etwas mit dem using-Statement innerhalb des Formulars erscheinen zu lassen, so dass das Ändern von Void nur natürlich erschien. Was ich vermisste war der ViewContext Writer. –
+1 Liebe es, einfach und funktioniert! Ich kann jetzt automatisch den AntiForgeryToken mit meinem eigenen Formularhelfer einfügen – Darren