Пользовательское расширение AjaxHelper, объединяющее AjaxOptions - PullRequest
3 голосов
/ 29 июня 2011

Я создаю клиентское расширение ajaxhelper для создания метода Ajax.ActionImage (...) (см. Код ниже).

Что я не знаю, как это сделать, это "объединить"AjaxOptions в мой атрибут привязки href.Я мог бы использовать ajax.ActionLink (...), но тогда я не знаю, как построить свой элемент изображения внутри созданной MvcHtmlString.

Заранее спасибо!

    <Extension()> _
    Public Function ActionImage(ByVal ajax As AjaxHelper, ByVal controller As String, ByVal action As String, ByVal routeValues As Object, ByVal AjaxOptions As Object, ByVal imagePath As String, ByVal alt As String, ByVal width As Integer, ByVal height As Integer) As MvcHtmlString

        Dim url = New UrlHelper(ajax.ViewContext.RequestContext)

        Dim imgHtml As String
        Dim anchorHtml As String
        Dim imgbuilder = New TagBuilder("img")

        imgbuilder.MergeAttribute("src", url.Content(imagePath))
        imgbuilder.MergeAttribute("alt", alt)
        imgbuilder.MergeAttribute("width", width)
        imgbuilder.MergeAttribute("height", height)
        imgHtml = imgbuilder.ToString(TagRenderMode.SelfClosing)

        Dim anchorBuilder = New TagBuilder("a")
        anchorBuilder.MergeAttribute("href", url.Action(action, controller, routeValues))
        anchorBuilder.InnerHtml = imgHtml
        anchorHtml = anchorBuilder.ToString(TagRenderMode.Normal)

        Return MvcHtmlString.Create(anchorHtml)

    End Function

1 Ответ

3 голосов
/ 29 июня 2011

Во-первых, вам нужно изменить тип переменной ajaxOptions на AjaxOptions (в пространстве имен System.Web.Ajax). Сделав это, вы можете добавить следующее, чтобы объединить ваши ajaxOptions с вашим тегом привязки:

If ajaxHelper.ViewContext.UnobtrusiveJavaScriptEnabled Then
    anchorBuilder.MergeAttributes(ajaxOptions.ToUnobtrusiveHtmlAttributes())
End If

Вам не нужны опции внутри вашего href. Параметры должны быть частью тега привязки для правильного анализа jquery.unobtrusive-ajax.js.

counsellorben

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