asp.net MVC3 使用带JS事件的控件

最近研究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,非常方便

posted on 2012-09-06 10:46  加温  阅读(520)  评论(0编辑  收藏  举报

导航