Ваш BeginField
не должен возвращать Action
.
Действие - это делегат, обратный вызов, который необходимо передать конструктору DisposableHelper
.Вы установите его как () -> htmlHelper.BeginField(formName)
.DisposableHelper работает с запоминанием двух обратных вызовов, которые вы передаете - сначала для запуска тега (BeginField
), который вызывается немедленно, а затем для завершения тега (EndField
), который вызывается при утилизации DisposableHelper
.
ОБНОВЛЕНИЕ : это то, как вы должны это реализовать.
a) Скопировать класс DisposableHelper
.
b) Написать расширение DisposableExtensions
:
public static class DisposableExtensions
{
public static IDisposable DisposableField(this HtmlHelper htmlHelper, string formName)
{
return new DisposableHelper(
() => htmlHelper.BeginField(formName),
() => htmlHelper.EndField()
);
}
}
c) Измените объявление BeginField
, чтобы оно вернуло void
:
public static void BeginField(...)
d) Добавьте метод EndField
, чтобы закрыть тег.
д) Используйте это так:
using (Html.DisposableField("MyForm"))
{
...
}