Razor et HTML Helpers
Je suis en train de le port, le vieux HTML.Image helper, que je suis sûr que tout le monde a utilisé à un moment ou à un autre, et je vais avoir des problèmes. Le suivant compile amende:
@Html.Image("my-id", "~/Content/my-img.png", "Alt Text")
Mais quand j'essaie de l'utiliser dans la vue, il suffit d'écrire:
<img alt="Alt Text" id="my-id" src="/content/my-img.png" />
Et n'affiche pas l'image. Quelqu'un peut-il aider?
Voici le code HTML.Image helper code que j'utilise:
public static class ImageHelper
{
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)
{
//Instantiate a UrlHelper
var urlHelper = new UrlHelper(helper.ViewContext.RequestContext);
//Create tag builder
var builder = new TagBuilder("img");
//Create valid id
builder.GenerateId(id);
//Add attributes
builder.MergeAttribute("src", urlHelper.Content(url));
builder.MergeAttribute("alt", alternateText);
builder.MergeAttributes(new RouteValueDictionary(htmlAttributes));
//Render tag
var ret = new MvcHtmlString(builder.ToString(TagRenderMode.SelfClosing));
return ret.ToHtmlString();
}
}
source d'informationauteur jsteve81
Vous devez vous connecter pour publier un commentaire.
Le Rasoir moteur d'affichage sera automatiquement HTML échapper les chaînes rendus par
@
-blocs.Pour le rendu HTML, vous devez écrire un
IHtmlString
mise en œuvre dans le@
-bloc.Changer votre méthode pour retourner
HtmlString
au lieu destring
.tout comme ce testé et fonctionne parfaitement. j'ai besoin de quelque chose de ce genre pour concaténer le nom de l'image forme le modèle de grâce.
et celui-ci fonctionne aussi.
Je voudrais essayer d'emballage l'url de l'image dans un appel à l'Url du Contenu de la méthode ainsi
qui doit convertir l'url relative absolue lorsque la page est affichée à l'navigateur
J'ai eu le même problème et j'avais utilisé MvcHtmlString comme type de retour de ces 2 méthode d'extension et il fonctionne