UserControl做HTML生成

 我们都知道AJAX不能直接请求UserControl.ascx数据,所以这里只能采用迂回的办法了。比如AJAX先请求GetUserControl.ashx处理程序,GetUserControl.ashx根据请求加载对应UserControl后,再将该UserControl内容返回给客服端。这里实现方法可参照老赵文章“技巧:使用UserControl做HTML生成”。

    项目Default.aspx页面里设置AJAX请求:

///AJAX加载用户控件
///请求获取的控件名
///要加载控件内容的区域
kity_utils.getUserControl = function (controlName, controlSite) {
        $.ajax({
            type: "get",
            url: "GetUserControl.ashx?tt=" + new Date().getSeconds() + "",
            dataType: "html",
            data: "userControl=" + controlName + "",
            success: function (data) {
                if (data != "" || data != null) {
                    $(controlSite).html(data);
                }
            }
        });
    };

    这里是我写的一个JS工具库,并将其附加到Jquery上,故调用时:

$.kity_utils.getUserControl(“sealInfo”, "#show_box");

    在GetUserControl.ashx中实现如下:

if (context.Request["userControl"] != null)
{
     string controName = context.Request["userControl"];
     string html = "";
     switch (controName)
            {
                case Utils.UserControlName.SealInfo:
                    html = Utils.GetUserControl.UserControlContent("Control/SealInfo.ascx");
                    break;
            }
     Utils.WriteToAjax.WriteContentToAjax(html);
 }

    在GetUserControl类中的实现如下:

public static string UserControlContent(string controlPath)
{
    Page page = new Page();
            
    System.Web.UI.Control userControl = page.LoadControl(controlPath);
    page.Controls.Add(userControl);

    StringWriter textWriter = new StringWriter();
    HttpContext.Current.Server.Execute(page, textWriter, false);

    string html = textWriter.ToString();
    textWriter.Dispose();
    return html;
}

    通过这样的解决方法,可以很好的实现AJAX的数据交互了,没有HTML拼接代码,仅仅使用UserControl控件完成各式各样的HTML片段生成,既方便又快速。而我在整个项目都是采用都是采用这样的方法实现,即使是印章制作模块的数据交互。当然,这里涉及到项目数据条目的显示,就肯定有分页了,而都是AJAX架构,并且我使用Repeater控件做数据绑定,所以这里将在下一篇进行总结。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值