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(...)
呼び出しで例外が発生する理由を知りたいです。
ありがとう!