0

ActionLink を使用するのではなく、アクションを呼び出す jQuery ボタンを吐き出す HtmlHelper 拡張呼び出し ActionButton を作成しました。ただし、次の行の拡張メソッド内から例外を受け取ります (これは、私が見た例外を発生させるコードのサンプルにすぎません)。

    MvcHtmlString str = helper.Action(actionName, controllerName, routeValues);

これが完全な方法ですが、UrlHelper を使用してアクション URL を作成します (これは私にとってはうまくいきます)。私も持っusing System.Web.Mvcていusing System.Web.Mvc.Htmlます。

    public static HtmlString ActionButton(this HtmlHelper helper, string linkText, string actionName, string controllerName, object routeValues)
    {
        TagBuilder tag = new TagBuilder("a");
        UrlHelper urlHelper = new UrlHelper(helper.ViewContext.RequestContext);
        tag.MergeAttribute("href", urlHelper.Action(actionName, controllerName, routeValues));

        // the next line causes the exception, not really being used other than to 
        // raise the exception and illustrate the call I was making
        MvcHtmlString str = helper.Action(actionName, controllerName, routeValues);

        tag.MergeAttribute("rel", "external");
        tag.MergeAttribute("data-role", "button");
        tag.MergeAttribute("data-mini", "true");
        tag.MergeAttribute("data-inline", "true");
        tag.MergeAttribute("data-icon", "arrow-r");
        tag.MergeAttribute("data-iconpos", "right");
        tag.MergeAttribute("data-theme", "b");

        tag.SetInnerText(linkText);
        HtmlString html = new HtmlString(tag.ToString(TagRenderMode.Normal));
        return html;
    }

helper.Action(...)呼び出しで例外が発生する理由を知りたいです。

ありがとう!

4

2 に答える 2

0

それは、あなたが呼び出しているためですhelper.Action(それは ですHtmlHelper) であり、 ではありませんurlHelper.Action

于 2013-01-02T18:53:21.467 に答える
0

HtmlHelper.Action()渡したアクション メソッドをすぐに呼び出し、その結果を返します。
それはあなたが望むものではありません。

UrlHelper.Action()アクションに URL を返すが必要です。

于 2013-01-02T18:53:26.543 に答える