Пользовательский помощник работает неправильно

Я создал следующий класс Html Helper для отображения изображения:

Класс:

namespace MvcWebMobile.CustomHelpers
{
 public static class CustomHelper
 {
 public static string Image(this HtmlHelper helper, string id, string url, string alternateText)
 {
 return Image(helper, id, url, alternateText, null);
 }
 public static string Image(this HtmlHelper helper, string id, string url, string alternateText, object htmlAttributes)
 {
 // Create tag builder
 var builder = new TagBuilder("img");
 // Create valid id
 builder.GenerateId(id);
 // Add attributes
 builder.MergeAttribute("src", url);
 builder.MergeAttribute("alt", alternateText);
 builder.MergeAttributes(new RouteValueDictionary(htmlAttributes));
 // Render tag
 return builder.ToString(TagRenderMode.SelfClosing);
 }
 }
}

Вид:

@Html.Image("img1", "../../Content/images/icons-18-black.png", "logo")

Теперь, когда я использую пользовательский помощник в своем представлении, изображение не отображается, вместо изображения следующего сообщения печатается на веб-странице

3 ответа

Ваш помощник должен вернуть HtmlString вместо string.

public static HtmlString Image(this HtmlHelper helper, string id, string url, string alternateText)
{
 return Image(helper, id, url, alternateText, null);
}
public static HtmlString Image(this HtmlHelper helper, string id, string url, string alternateText, object htmlAttributes)
{
 // ...
 return new HtmlString(builder.ToString(TagRenderMode.SelfClosing));
}


Вместо возврата строки попробуйте вернуть MvcHtmlString,

public static MvcHtmlString Image(this HtmlHelper helper, string id, string url, string alternateText)
 {
 }


Использовать MvchtmlString:

public static MvcHtmlString Image(this HtmlHelper helper, string id, string url, string alternateText)
 {
// ...
 return new MvcHtmlString(builder.ToString(TagRenderMode.SelfClosing));
 }

licensed under cc by-sa 3.0 with attribution.