当前位置:编程学习 > asp >>

Asp.Net MVC2 控件开发实例(1)

想开发一个控件,功能比较简单,实现这样一个多选功能:一个文本框,点击时弹出层,左侧展示绑定数据表的数据,右侧为选择后的结果,有左选和右选,取消、清除功能,如下图:

 \

 以HtmlHelper的形式调用:

         <%=Html.MultiSelectFor(m => m.CodeMC, m => m.CodeDM, "dm_jwrylbb","dm<80",",",500,"标题", new { @style = "width:400px" })%>

选择后点击确定,选择项会用分隔符拼接存入文本框,关键信息(如显示项的ID)会存入隐藏域 

其中参数按顺序为:文本框ID,隐藏域ID,数据表名称,绑定的数据表过滤条件,分隔符,弹出层高度,标题,htmlAttributes。 

思路:在htmlhelper中构建文本框和隐藏域控件,文本框控件赋予onfocus事件,此事件post调用PartialViewResult:ShowView(...),此action绑定弹出层所需model,并返回控件view并填充到弹出层中。先来看helper:(篇幅关系不列出所有重载)

标准的htmlHelper:
 1 public static MvcHtmlString MultiSelectFor<TModel, TValue>(this HtmlHelper<TModel> helper, Expression<Func<TModel, TValue>> expressionMC, Expression<Func
<TModel, TValue>> expressionDM,string tableName,string condition,string split,int height,string caption,
 object mcHtmlAttributes)
 2         {
 3             StringBuilder sb = new StringBuilder();
 4             string mcString = ExpressionHelper.GetExpressionText(expressionMC);
 5             string dmString = ExpressionHelper.GetExpressionText(expressionDM);
 6 
 7             TagBuilder tag = new TagBuilder("input");
 8             tag.Attributes.Add("type", "text");
 9             tag.Attributes.Add("name", mcString);
10             tag.GenerateId(mcString);
11 
12             object mcValue = ModelMetadata.FromLambdaExpression(expressionMC, helper.ViewData).Model;
13             
补充:Web开发 , ASP.Net ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,