1.尊敬的合作伙伴:您好!
非常感谢您使用微软新闻组技术支持!
关于您提到的asp.net无法引用vc写的控件的问题,我想请问您是想在服务器端引用vc控件中的一些功能,还是vc写了一个activex的控件而无法在网页中使用。请您能否详细描述一下您目前遇到的错误。或者是您引用vc控件时遇到的具体错误信息,这样以方便我们能够更好的来帮助您解决问题,谢谢!
2.关于您提到c#与vc写的activex控件进行交互的问题,从您的描述来看,根据我的理解,您是想知道asp.net服务器端如何与前台页面中包含的activex控件进行通讯的问题,如果我的理解有误,请指出。
根据我的经验,后台程序与前台activex是没有办法进行直接通讯的,因为它们处于两种不同的机制下面。首先activex的行为或者事件全部是在客户端出发的,而它本身并不具备与服务器端通讯的功能。其次c#编写的asp.net完全属于一套web application的框架体系,它本身相应客户端的一些请求,然后再做出一些具体的回应动作,而它本身并不具备捕获客户端事件的能力。所以如果直接让activex控件与asp.net服务器端的应用程序进行通讯这种方法是没有办法做到的。
因此,根据我的经验,我们可以选者两种方法来实现。首先,我们可以写一些隐藏的字段,来存储activex在客户端所更改的一些信息。比如说可能activex控件中,有些地理信息,用户选择从“北京”改为了“上海”,这个时候我们就可以利用javascript来捕获这个事件(具体的捕获方法要视activex控件的具体实现而言),这时候,我们用javascript将我们实现设定的一些隐藏字段的信息更改,然后在由一些服务器端控件激发postback事件,将这些值传递到服务器端,然后由服务器端存入数据库。相应的,当服务器段从数据库读取到一些信息,然后将它呈现的客户端的一些隐藏字段中,然后activex控件再从字段中来获取这些信息。
另外一种方法就是我们需要编写自己的httplistener,监听http请求,然后进行判断,如果是activex的请求,就通知当前的asp.net应用程序来响应这个请求。
希望我的回复对您有所帮助,谢谢!
3.关于您提到的“朋友给我说c#可以实现vc activex控件的接口或者抽象类”,我想请问您这里指的是服务器端还是客户端。首先,如果在服务器端,那么.net和activex通过com interop是可以做交互操作的。就好比我们在服务器端想要从数据库读取数据,并且有一些自定义的需求,这个时候我们可以用c++写一个activex来实现这个功能,然后asp.net应用程序中调用这个activex,将数据读取出来。但如我前文提到的,这是一个纯粹的服务器端行为。
而从您当前的需求来看,网页中肯定包含一个activex控件,而这个控件被客户端下载并安装了,这个时候,客户端打开浏览器访问网页,通过网页中内欠的activex控件直接和服务器端交互数据,这个时候asp.net就没有办法来捕获这些事件,除非使用javascript捕获,然后和asp.net通信。
根据我的经验,您朋友提到的可能是第一种交互行为。
新闻热点
疑难解答
图片精选