SAUCER!紧急求助,高人请进!UP有分!

rqxiang 2003-08-29 04:03:59
现在遇到这么个难题:项目是B/S结构(ASP.NET+C#),
用VC.NET的ATL作个OCX控件,其中有个方法接受C#传入的参数并返回到C#代码中一个返回值(或字符串),在调用的过程中,在C#工程(服务器端)中引用但在页面调用OCX方法时无法向OCX传参.我试用JS(浏览器端)调用OCX的方法,但在C#工程中就无法引用,编译出现致命错误(ComException)!该如何解决?如果能写个简单的Demo就最好了!
我的目的是:让OCX自动从服务器端下载并安装到浏览器端
我猜测是否在C#代码中能成功调用的OCX控件就不能在象
JS这样的浏览器端脚本里调用?
该OCX无界面,只实现方法功能!另外:SAUCER老兄,我的OCX不是STA,在ATL里做的是单元线程!
...全文
45 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
panyee 2003-08-30
  • 打赏
  • 举报
回复
我做过类似的东东, aspx页面有两ocx控件, 进入页面时, 服务端默认会写些参数给客户端

客户端完全用javascript来控制控件运行, 之后通过xmlhttp的方式把内容传给服务器, 之后还要进行server与client的交流

附上代码例子, 讨论一下

<html>
<body>
<script language="javascript">
var url = "<%=strUrl%>";
function window.onload()
{
var strOldFile = "c:\\<%=strGuid%>.ext";
strResult = GetFileFromServer(...参数...);//通过xmlhttp方式从服务器获取文件的内容,
var str = DownFile.WriteFile(strOldFile, strResult); //文件操作控件把文件内容写到新文件名里
try
{
var iRet = Sea.Method1(strOldFile, .....参数);//Sea控件一方法, 与客户端有交互
if(iRet != 0)
{
DownFile.KillFile(strOldFile);//文件操作控件后台执行删除操作
alert("xxxxx有错");
}
else
{
//成功
url = "Upload.asp?sessionid=<%=strSessionID%>";//接收文件的服务端asp文件
var strNewFile = Sea.outFileName; //Method1成功后取得控件某属性
var strSea = Sea.otherName; //控件另一属性
//Upload的功能是把加密后的文件以ado.stream+xmlhttp的方式上传到服务器
//document.all("hidFile").value = sResult;服务端把上传后的新文件名传回给客户端, 把这个值放在hidFile域里
if(Upload(strNewFile, url))
{
//发xml包,去重新构建新的xml文件
url = "cmdSend.aspx?sessionid=<%=strSessionID%>";
var strXml = "<param><action>sealfile</action>";
strXml += "<biaoshi><%=strbiaoshi%></biaoshi>";
strXml += "<ID><%=strID%></ID>";
strXml += "<Zhengwen>" + document.all("hidFile").value + "</Zhengwen>";
strXml += "</param>";
//以xmlhttp方式发送数据包给服务器, 对此次操作进行注册
var strRet = ExecServerPrgm(url, "POST", "param=" + escape(strXml));
if(strRet == "-1" || strRet == "")
{
alert("xxxx失败!");
return;
}
if(strRet == "TRUE")
{
alert("xxx成功!");
parent.location.href = "xxxxxxx.aspx";
}
}

}
}
catch(e)
{

}
}

</script>
<body>
<OBJECT id="Sed" height="0" width="0" classid="CLSID:xxxxxxxxxxxxxx" VIEWASTEXT>
</OBJECT>
<OBJECT id="DownFile" codeBase="./cabs/xxxxxx.cab#version=6,8,0,7" classid="clsid:xxxxxxxx" VIEWASTEXT>
</OBJECT>
<input type="hidden" id="hidFile" value="">
</body>
rqxiang 2003-08-30
  • 打赏
  • 举报
回复
我得OCX就是不可见的!
rqxiang 2003-08-30
  • 打赏
  • 举报
回复
To:BenZ004(仲陵)
ufo80 2003-08-30
  • 打赏
  • 举报
回复
up
rqxiang 2003-08-30
  • 打赏
  • 举报
回复
那我该怎么办?项目是Asp.NET,别人的页面全是Asp.NET做好了,就等我的OCX了,就没有别的解决方法了?郁闷!!再想想!!!
gweidian 2003-08-30
  • 打赏
  • 举报
回复
UP
MSNETFANS 2003-08-30
  • 打赏
  • 举报
回复
UP
BenZ004 2003-08-29
  • 打赏
  • 举报
回复
如思归后面说的
用隐藏控件hidden input来存放那个值
我用过这个,不过不是用来解决ocx的。
BenZ004 2003-08-29
  • 打赏
  • 举报
回复
UP一下再仔细看~:)
saucer 2003-08-29
  • 打赏
  • 举报
回复
it is an ocx, it is supposed to run at the client side. Do you understand the differnce between the client side and server side?

>>>其中有个方法接受C#传入的参数并返回到C#代码中一个返回值(或字符串)

call the method on the client side in javascript, save the return value in a hidden input control and submit the form back to the server side
alphawin 2003-08-29
  • 打赏
  • 举报
回复
up
leal 2003-08-29
  • 打赏
  • 举报
回复
那用js调用ocx的方法,再用js将返回值返回到服务器的cs中,可行吗?
xiongliang2003 2003-08-29
  • 打赏
  • 举报
回复
学习下
xiongliang2003 2003-08-29
  • 打赏
  • 举报
回复
学习下
lwgj 2003-08-29
  • 打赏
  • 举报
回复
up
loulanlouzhu 2003-08-29
  • 打赏
  • 举报
回复
听听!
rqxiang 2003-08-29
  • 打赏
  • 举报
回复
难道就没有办法了吗?C#代码是在服务器端编译,编译后是以Js脚本发送到浏览器端的,他不也是<Object>的形式发送的吗?理论上应该可以阿?再想想!!!
panyee 2003-08-29
  • 打赏
  • 举报
回复
不能, 只能用js来设置,调用ocx的方法
ocx以<object>的形式嵌入在aspx页面

在aspx.cs页面是不让访问的

因为ocx运行于客户端, .cs运行于服务端
leal 2003-08-29
  • 打赏
  • 举报
回复
在c#代码里无法向ocx传参吗?
用js向c#代码传返回值可以吗?
rqxiang 2003-08-29
  • 打赏
  • 举报
回复
来个牛人!
加载更多回复(2)

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧