0

ASP.NET MVC フレームワークを試していて、ajax ヘルパー メソッドを作成したいと考えています。基本的に、このヘルパーは ActionLink のように動作しますが、リンク テキストをエンコードしません。HtmlHelper として記述するのはかなり簡単です。独自のバージョンの GenerateLinkInternal を記述するだけです。ただし、これは AjaxHelpers では機能しません。GenerateLink の ajax バージョンは内部の ToJavascriptString (GenerateAjaxScript を介して) を間接的に呼び出しているため、MVC アセンブリの外部で呼び出すことはできません。全体を書き直すことはできますが、やり過ぎのようです。より良い方法はありますか?

最終的には、このヘルパーを BeginForm のように動作させて、リンクが HTML のブロックを囲むようにしたいと考えています。まだ見ていませんが、ToJavascriptStringも使っていると思います。私は Web を検索し、MVC ソース コードを調べて、完全に間違った方向に進んでいるかどうか疑問に思い始めました。

ありがとう

更新: この問題を見れば見るほど、解決策はないと思います。MVC フレームワークを作成した人は誰でも、人々が独自のヘルパーを作成するのを支援することを考えていませんでした!

更新: AjaxOptions 機能をほぼ複製するヘルパーを作成することになりました。

4

1 に答える 1

0

Html.ActionLink()代わりに使用するだけで、独自のヘルパーをゼロから作成する (つまり、 /Ajax.ActionLink()メソッドの呼び出しを行わない) ことで、おそらくこれをはるかに簡単に行うことができますUrl.Action()

たとえば、これを行うのは非常に簡単です。

public static string NonEncodedUrl(this HtmlHelper helper, 
    string linkAction, string text)
{
    // Get a new UrlHelper instance in the current context
    var url = new UrlHelper(helper.ViewContext.RequestContext);

    return String.Format("<a href=""{0}"">{1}</a>", url.Action(linkAction), text);
}

もちろん、独自のニーズに合わせて、オーバーロードと追加のパラメーターを使用してこれを拡張できます。

于 2009-10-04T19:06:12.427 に答える