posts - 19,  comments - 128,  trackbacks - 0

今天抽了点时间写了一个很简单的MySoft.Web相关组件的示例程序。

别看它简单,但五脏俱全,下面就一一介绍这个示例的各种实现:

第一步:建一个Web项目,引用MySoft.Web程序集:

tmp94D9

将MySoft.Web引用添加到当前项目中,在bin目录下为最新版本,之前的版本不保证可以编译通过

 

第二步:配置web.config

    <pages enableViewState="false" enableSessionState="true">
      <controls>
        <add tagPrefix="my" namespace="MySoft.Web.UI.Controls" assembly="MySoft.Web" />
      </controls>
    </pages>
    <httpHandlers>
      <add verb="GET,POST" path="ajax/*.ashx" type="MySoft.Web.AjaxPageHandler, MySoft.Web"/>
    </httpHandlers>

上面的controls是使用MySoft内部控件时所需的。

httpHandlers里的配置是用于Ajax处理

 

第三步:编写客户端脚本与服务端通讯

后台: 实现客户端读取服务端时间的代码

注意:需要启用EnableAjaxCallback

public partial class _Default : AjaxPage
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }

    [AjaxMethod]
    public DateTime GetServerDateTime()
    {
        return DateTime.Now;
    }

    protected override bool EnableAjaxCallback
    {
        get
        {
            return true;
        }
    }
}

前台:<input type="button" value="获取服务端时间" onclick="getDateTime();" />

function getDateTime() {
    var time = AjaxMethods.GetServerDateTime();
    alert(time.toLocaleString());
}

此处的AjaxMethods内部对象,表示当前页面所有[AjaxMethod]方法的集合

 

Ajax方式加载用户控件的方法:

新建一个用户控件,起名为:TestParamControl.ascx

客户端代码:

function loadUserControlWithParam() {

    var value = $('txtName').value;
    if (!value) {
        Dialog.alert('请输入名字!');
        return;
    }


    //divContainer为<div id=’divContainer’ />容器

    //~/TestParamControl.ascx为用户控件路径

    //{Name : value }此处为用户控件的参数,可以传入多个参数

    Ajax.UpdatePanel('divContainer', '~/TestParamControl.ascx', { Name: value });
}

服务端代码:

public partial class TestParamControl : System.Web.UI.UserControl, MySoft.Web.UI.IAjaxProcessEventHandler
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }

    #region IAjaxProcessEventHandler 成员

    //加载数据必须实现接口IAjaxProcessEventHandler
    public void OnAjaxProcess(CallbackParams callbackParams)
    {

        因为数据从客户端传入服务端为字符串,所以需要进行一些转换

        callbackParams可以很方便的转换成各种数据类型,如下:

        int age = callbackParams[“age”].To<int>();

        DateTime time = callbackParams[“startDate”].To<DateTime>();

        直接获取string,可使用callbackParams[“参数名"]或callbackParams[“参数名"].Value;


        this.Label1.Text = "你的名字是:" + callbackParams["Name"].Value;
    }

    #endregion
}

 

插入代码块的功能居然报出了bug:

System.NullReferenceException: 未将对象引用设置到对象的实例。
   在 CodemarksFramework.LiveWriter.Plugins.FrmLiveWriterPlug..ctor()
   在 CodemarksFramework.LiveWriter.Plugins.FrmLiveWriterPlug..ctor(String& content)
   在 CodemarksFramework.LiveWriter.Plugins.LiveWriterAdapter.CreateContent(IWin32Window dialogOwner, String& content)
   在 WindowsLive.Writer.PostEditor.ContentSources.ContentSourceManager.PerformInsertion(IContentSourceSite sourceSite, ContentSourceInfo contentSource)

不知道有谁知道怎样解决!

 

先写到这里吧,自己下载源码去研究,还有很多功能需要你们自己去发掘!

这里是效果图:

tmp1BE3

Ajax加载用户控件效果图:

tmp3B2B

Dialog弹出框效果图:

tmp160C

Dialog提示框效果图:

tmpE849

 

 

 

示例下载地址:http://files.cnblogs.com/maoyong/WebExample.rar

MySoft.Data从入门到精通系列篇

posted on 2010-04-13 22:15  MySoft  阅读(2315)  评论(3编辑  收藏