Давайте посмотрим (или предположим), что делает Html.BeginForm()
.С «точки зрения рендеринга» он обычно просто отображает начальный тег формы в вывод html.он одноразовый, потому что в этом случае он знает, когда внутренний html-контент для формы завершил рендеринг, и может отображать конечный тег </form>
в своем методе Dispose()
.Со всем этим вы получаете - сначала отображается открытый тег form
, а затем настраиваемый HTML-контент, который вы хотите, и после этого идет конечный тег.Результат - вы получите полную HTML-форму в выводе.
<form>
...contents(Result of Html.TextBoxFor, etc. helpers)
</form>
Я думаю, что ваша ситуация будет лучше всего решена, как в случае формы.На данный момент у меня не так много времени, чтобы написать полный код, но если вы посмотрите на FormExtensions.BeginForm
через просмотр рефлектора исходного кода (спасибо @druttka) (если у вас старая версия или купленная лицензия)или http://wiki.sharpdevelop.net/ilspy.ashx и пояснения, приведенные выше, вы можете понять, с чего начать.Удалите ненужный код из метода BeginForm, создайте свой класс MvcContentField: IDisposable вместо MvcForm, измените Dispose()
на нем, чтобы отобразить тег end div, и вы получите именно то, что вам нужно.