Piszę kod, w którym chciałbym renderować formularz BeginForm MVC, ale także zawierać dodatkowy kod HTML.
Np.
@using (Html.BeginMyCustomForm()) {
}
A to wypluwa
<form action="" etc>
PLUS
<input type="hidden" name="my-additional-field-i-always-want">
@Html.ValidationMessageFor(m => m)
Czy to możliwe?
Wiem, że będę szukał jakiegoś rozszerzenia lub czegoś najprawdopodobniej.
Mam nadzieję, że to ma sens iz góry dziękuję!
2 odpowiedzi
Może możesz użyć czegoś takiego?
public static class FormExtensions
{
public static MvcForm BeginMyCustomForm(this HtmlHelper htmlHelper)
{
var form = htmlHelper.BeginForm();
htmlHelper.ViewContext.Writer.write( .... )
return form;
}
}
Nie jest dobrym pomysłem dołączanie takich rzeczy do rozszerzenia BeginForm. Powodem jest to, że dobry projekt nakazuje przedmiotom robić jedną rzecz. Nazywa się to zasadą pojedynczej odpowiedzialności.
Teraz chcesz, aby obiekt formularza również tworzył dane wejściowe i walidację.
Zamiast tego użyj systemu szablonów MVC i utwórz szablon domyślny, który będzie odpowiadał Twoim potrzebom. Powinieneś również użyć Html.HiddenFor zamiast używać znacznika wejściowego, chyba że istnieje jakiś konkretny powód, aby tego nie robić.
Inną opcją jest użycie rusztowania MVC do wygenerowania tego, co chcesz.
Więcej informacji o szablonach edytora http:// /bradwilson.typepad.com/blog/2009/10/aspnet-mvc-2-templates-part-1-introduction.html
Więcej informacji o rusztowaniach http://blog.stevensanderson.com/2011/01/13/scaffold-your-aspnet-mvc-3-project-with-the-mvcscaffolding-package/
Podobne pytania
Nowe pytania
asp.net-mvc-3
ASP.NET MVC 3 to trzecia główna wersja rozszerzenia Model-View-Controller do tworzenia aplikacji internetowych w środowisku .NET.