asp.NetMVC 3 JSイベント付きコントロールを使用

3247 ワード

最近MVCを研究して、确かに良いもので、しかし持参した@Html.ActionLinkメソッドは簡単なコントロールしか生成できないので、onclickイベントを追加しようともできないので、資料を探しましたが、比較的詳細な紹介は一つもなく、結局半模索半検索で出てきました.
まずクラスにカスタム属性を融合させるコントロールを追加し、共通クラスに書くことをお勧めします.
namespace EduWeb.Common
{
    public static class HtmlHelperEx
    {
        public static MvcHtmlString ActionLinkForJS(this HtmlHelper htmlHelper, string linkText, object htmlAttributes)
        {
            if (String.IsNullOrEmpty(linkText))
            {
                throw new ArgumentException("linkText");
            }

            TagBuilder linkTag = new TagBuilder("a");
            linkTag.InnerHtml = linkText;
            linkTag.MergeAttribute("href", "javascript:void(0)");
            linkTag.MergeAttributes(new RouteValueDictionary(htmlAttributes));
            return new MvcHtmlString(linkTag.ToString(TagRenderMode.Normal));
        }
    }
}

MvcHtmlStringタイプを必ず返すことに注意してください.直接tostringを返すと、ページに文字列として表示されます.中身は
linkTag.MergeAttributes(new RouteValueDictionary(htmlAttributes));コントロールのプロパティを添付するという意味です.
これによりVIEWではコントロールに希望の属性を加えることができ、イベントだけでなく、様々なカスタム属性を加えて希望の情報を保存することができます.
@Html.ActionLinkForJS("    ", new { onclick = "alertEx('" + item.UserId + "')", customvalue = item.UserId })

このコントロールにはcustomvalueのプロパティがあり、useridに取れるので便利です.