Я просмотрел различные посты и нашел расширение для создания помощника по ссылкам действий, который добавит изображение в виде ссылки следующим образом.
public static MvcHtmlString ImageLink(this HtmlHelper helper, string actioNName, string imgUrl, string alt, object routeValues, object linkHtmlAttributes, object imageHtmlAttributes)
{
var urlHelper = new UrlHelper(helper.ViewContext.RequestContext);
var url = urlHelper.Action(actioNName, routeValues);
//Create the link
var linkTagBuilder = new TagBuilder("a");
linkTagBuilder.MergeAttribute("href", url);
linkTagBuilder.MergeAttributes(new RouteValueDictionary(linkHtmlAttributes));
//Create image
var imageTagBuilder = new TagBuilder("img");
imageTagBuilder.MergeAttribute("src", urlHelper.Content(imgUrl));
imageTagBuilder.MergeAttribute("alt", urlHelper.Content(alt));
imageTagBuilder.MergeAttributes(new RouteValueDictionary(imageHtmlAttributes));
//Add image to link
linkTagBuilder.InnerHtml = imageTagBuilder.ToString(TagRenderMode.SelfClosing);
//return linkTagBuilder.ToString();
return MvcHtmlString.Create(linkTagBuilder.ToString());
}
, который выдает правильный HTML, который, как мне кажется, мне нужен, но при запуске я получаю сообщение об ошибке «Объект не поддерживает это свойство или метод». Однако, когда я просто использую ссылку MVC HtmlAction, которая создает в основном то же самое, она работает. Я думаю, что проблема в том, что он вложенный, и мне пришлось бы изменить код jQuery, чтобы запустить диалоговое окно. Вот код для этого.
<script type="text/javascript">
$.ajaxSetup({ cache: false });
$(document).ready(function () {
$(".openDialog").live("click", function (e) {
e.preventDefault();
$("<div></div>")
.addClass("dialog")
.attr("id", $(this).attr("data-dialog-id"))
.appendTo("body")
.dialog({
title: $(this).attr("data-dialog-title"),
close: function () { $(this).remove() },
modal: true
})
.load(this.href);
});
$(".close").live("click", function (e) {
e.preventDefault();
$(this).closest(".dialog").dialog("close");
});
});
</script>
Это HTML, который получает с изображением и без него, один работает, а другой нет.
//Without the Image and it works fine
<a class="openDialog" data-dialog-id="emailDialog" data-dialog-title="Contact Us" href="/Home/ContactUs">Contact Us</a>
//With the Image that produces an Error
<a class="openDialog" data_dialog_id="emailDialog" data_dialog_title="Contact Us" href="/Home/ContactUs"><img alt="Contact us" src="Content/images/common_en/subnavi_contact.png" /></a>
Любая помощь будет оценена. Заранее спасибо.