今天抽了点时间写了一个很简单的MySoft.Web相关组件的示例程序。
别看它简单,但五脏俱全,下面就一一介绍这个示例的各种实现:
第一步:建一个Web项目,引用MySoft.Web程序集:
将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)
不知道有谁知道怎样解决!
先写到这里吧,自己下载源码去研究,还有很多功能需要你们自己去发掘!
这里是效果图:
Ajax加载用户控件效果图:
Dialog弹出框效果图:
Dialog提示框效果图: