Benutzerdefinierte html-Helfer: Helfer Erstellen mit "using" - Anweisung-Unterstützung
Schreibe ich meine erste asp.net mvc-Anwendung und ich habe eine Frage zu benutzerdefinierte Html-Helfer:
Für die Herstellung einer form, die Sie verwenden können:
<% using (Html.BeginForm()) {%>
*stuff here*
<% } %>
Ich würde gerne etwas ähnliches machen mit eine benutzerdefinierte HTML-helper.
In anderen Worten, ich möchte das ändern:
Html.BeginTr();
Html.Td(day.Description);
Html.EndTr();
in:
using Html.BeginTr(){
Html.Td(day.Description);
}
Ist das möglich?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier ist eine mögliche wiederverwendbare Implementierung in c# :
In diesem Fall
BeginTr
undEndTr
direkt schreiben in der Antwort-stream. Wenn Sie Erweiterung-Methoden, die einen string zurückgeben, müssen Sie zur Ausgabe mit :Ajax.ActionLink
zu unterstützen htmlcontent liefert sehr sauberen code.Ich habe versucht, die folgenden Ratschläge, die hier gegeben werden, in MVC3, aber ich lief in Probleme mit:
Wenn ich in diesem code meine Helfer war das schreiben in den Response-stream, BEVOR mein Layout gerendert wurde. Das hat nicht gut funktioniert.
Stattdessen habe ich diese verwendet:
Wenn man sich die Quelle für die ASP.NET MVC (auf Codeplex), sehen Sie die Umsetzung der BeginForm schließlich ruft nach unten, um den folgenden code:
Den MvcForm Klasse IDisposable implementiert, in der Sie die dispose-Methode schreibt die </form> auf die Antwort.
So, was Sie hatte tun müssen, ist schreiben die tags, die Sie möchten in die helper-Methode und gibt ein Objekt zurück, das IDisposable implementiert...in seiner dispose-Methode schließen Sie den tag ab.