サンプル MVC プロジェクトでカスタム Html ヘルパーを作成しようとしています。
これが私がこれまでに行ったことです:
public static MvcHtmlString ImageFor<TModel,TValue>(this HtmlHelper<TModel> htmlHelper,
Expression<Func<TModel,TValue>> expression,
string alternateText,
object htmlAttributes)
{
ModelMetadata metadata = ModelMetadata.FromLambdaExpression(expression, htmlHelper.ViewData);
string name = ExpressionHelper.GetExpressionText(expression);
TagBuilder tagBuilder = new TagBuilder("img");
tagBuilder.MergeAttribute("src", metadata.Model.ToString());
tagBuilder.MergeAttribute("alt", alternateText);
tagBuilder.MergeAttribute("name", name);
return MvcHtmlString.Create(tagBuilder.ToString(TagRenderMode.SelfClosing));
}
私のコントローラーでは、画像パスをプロパティ (imgUrl) に渡しています。
そのタグを作成しようとすると、image
ブラウザーでは表示されず、代わりに常に代替テキストが表示されます。
レンダリングされたマークアップを次に示します。
<img name="imageUrl" alt="alernate" src="C:\Users\Administrator\Desktop\down.png"/>
の緩やかに型付けされたヘルパーを実行しましたが@Html.Image
、完璧に機能します!.
私のコードで何がうまくいかなかったのですか。
を作成するためにたくさん検索しましStrongly Typed Helpers
たが、強く型付けされたヘルパーにアクセスするときに何が起こっているのかを説明したチュートリアルはありませんでした。
また、誰かがヘルパーに関するコードを投稿すると、説明のない単なるコードの一部であるSOの投稿も見ました。
誰かが強く型付けされたカスタム ヘルパーを作成するためのチュートリアルを持っている場合は、リンクを共有してください。