3 Stimmen

Benutzerdefinierte AjaxHelper-Erweiterung, Zusammenführung von AjaxOptions

Ich baue einen Kunden ajaxhelper Erweiterung, um eine Ajax.ActionImage(...) Methode zu erstellen (siehe Code unten).

Was ich nicht weiß, wie zu tun ist "verschmelzen" die AjaxOptions in meinem Anker href-Attribut. Ich könnte ajax.ActionLink(...) verwenden, aber dann weiß ich nicht, wie t bauen mein Bild-Element innerhalb der erstellten MvcHtmlString.

Vielen Dank im Voraus!

    <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

3voto

counsellorben Punkte 10814

Zunächst müssen Sie den Typ der Variablen ajaxOptions in AjaxOptions (im System.Web.Ajax-Namensraum) ändern. Sobald Sie dies getan haben, können Sie Folgendes hinzufügen, um Ihre ajaxOptions in Ihr Anker-Tag einzubinden:

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

Sie wollen nicht, dass die Optionen innerhalb Ihrer href. Die Optionen müssen Teil des Anker-Tags sein, um korrekt von jquery.unobtrusive-ajax.js geparst zu werden.

Beraterin

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X