0

サンプル 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の投稿も見ました。

誰かが強く型付けされたカスタム ヘルパーを作成するためのチュートリアルを持っている場合は、リンクを共有してください。

4

1 に答える 1

1

属性srcはローカル ドライブを指しています。それはうまくいきません。画像が見つからないため、ブラウザーに代替テキストが表示されます。代わりに画像のURLを使用する必要があります。たとえばsrc="/images/down.png"

于 2013-02-28T10:34:07.957 に答える