В MVC, как я могу получить экземпляр HtmlHelper от AjaxHelper? - PullRequest
0 голосов
/ 28 ноября 2018

У меня есть пользовательский элемент управления в моем проекте MVC 5.В конце я хочу добавить кнопку Сохранить и ValidationSummary (в методе WriteSubmitControls).Сводка проверки создается с использованием экземпляра HtmlHelper.Похоже, что HtmlHelper и AjaxHelper должны иметь общий класс или интерфейс, но они не отображаются.
Как получить доступ к экземпляру HtmlHelper, не передавая его?

public class MyCustomAjaxForm: IDisposable  
{  
    private readonly MvcForm _ajaxForm;

    public MyCustomAjaxForm(AjaxHelper ajaxHelper)  
    {
        _ajaxForm = ajaxHelper.BeginForm("Save", "Contacts", routeValues, ajaxOptions);
    }

    private void WriteSubmitControls()
    {
        _writer.WriteLine("<button type='submit'>Save</button>");
        // Output Validation Summary Here
    }

    public void Dispose()
    {
        WriteSubmitControls();
        _ajaxForm.Dispose();
    }
}

1 Ответ

0 голосов
/ 28 ноября 2018

Я думаю, что нашел решение, но не уверен, что это лучший способ.Я создаю новый экземпляр HtmlHelper, используя ViewContext и ViewDataContainer из AjaxHelper.

public class MyCustomAjaxForm: IDisposable  
{  
    private readonly MvcForm _ajaxForm;
    private readonly HtmlHelper _htmlHelper;

    public MyCustomAjaxForm(AjaxHelper ajaxHelper)  
    {
        _ajaxForm = ajaxHelper.BeginForm("Save", "Contacts", routeValues, ajaxOptions);  

        //create instance of HtmlHelper
        _htmlHelper = new HtmlHelper(ajaxHelper.ViewContext, ajaxHelper.ViewDataContainer);
    }

    private void WriteSubmitControls()
    {
        _writer.WriteLine("<button type='submit'>Save</button>");  

        //output ValidationSummary using instance of HtmlHelper
        _writer.WriteLine(_htmlHelper.ValidationSummary(true));

    }

    public void Dispose()
    {
        WriteSubmitControls();
        _ajaxForm.Dispose();
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...