经典问题:但发觉没有可用方法,郁闷!

lovcal 2006-10-26 10:26:27
System.Windows.Forms.MessageBox这东西,由于不太懂,还以为可以用在服务器端的CS文件中
哪里知道,在VS.NET编译环境中可以起作用,网站发布完之后什么反应也没有

查了下资料才知道,WinForm的东西在WebForm中使用的很难看!
但也有很多人说使用之后会在服务器端弹出对话框,但什么都没有

其他类似的方法:Response.Write("<script>confirm()<script/>")发觉在我这既是用VS调试,也是直接运行过去的,根本就不会弹出对话框,汗……见鬼了
Attribute.Add()的方法就算了,根本不合要求,因为我的程序是经过很多逻辑处理之后才需要确认这一步的(与后台数据库交互)

似乎只有一个办法就是将我前面这一长段的处理程序写在Ajax方法中,调用,然后javascript??感觉很不爽,可行性不高

不知道大家怎么处理服务器端在业务逻辑处理过程中需要交互操作的情况的??

比如:

程序开始:
……
……

要客户端确认(是、否)?

是的话-->Continue;
否的话--return;


程序结束

如何实现啊?比较郁闷……
...全文
184 17 打赏 收藏 举报
写回复
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
yangye1211 2006-10-30
  • 打赏
  • 举报
回复
我觉得是设计上的问题。面向过程还是面向对象的问题
lovcal 2006-10-30
  • 打赏
  • 举报
回复
多谢多谢!

就是要把原来的业务处理逻辑分成一段一段的,每个段共用的一些程序都变成非共用的了,呵呵,业务处理逻辑的关系,慢慢改进吧,就用Ajax了


非常感谢大家!
www_123du_com 2006-10-29
  • 打赏
  • 举报
回复
楼主首先要明白WebForm的大致运行机制。这应该是属于设计不妥造成的。WebForm根本就不应该在提交到服务器后再让用户确认,而应该在用户提交数据前确认。

就事论事,抱研究的态度看,解决你所说的问题也不难:
1.ajax,你自己已经说了,不知哪里不爽,为什么可行性不高。
2.在需要用户确认的时候Session["step"] = 2;Respnse.Write(...confirm(..)...);Response.End();这样,Write出来的脚本会马上输出给客户端,再次到服务器端时检查Session的step值就知道应该执行哪里了。
或者不用Session而在js中用查询字符串告诉服务器也行。

但这些方法都不提倡使用,应该在用户提交前确认所有需要确认的东西。

说到MessageBox.Show,不弹出来的原因很简单,就是没有消息泵。于是也不能使用System.Windows.Forms.Timer。
lovcal 2006-10-29
  • 打赏
  • 举报
回复
不是这样,呵呵,使提交之后服务器端业务处理逻辑处理过程中想跟操作者交互,得到答复,不过,一样谢谢了
shortstar 2006-10-29
  • 打赏
  • 举报
回复
我刚好今天做程序遇到你说的问题了,我解决了,不知道是不是你要的答案,给你看一下,以linkbutton举例
<asp:LinkButton ID="LinkButton2" runat="server" OnClientClick="return confirm('确定要删除吗?')" CommandArgument='<%# DataBinder.Eval(Container, "DataItem.id") %>'
CommandName="del" Visible="False">删除</asp:LinkButton>

点击这个按钮时会提示你确定还是取消,点取消不发生任何事件,点确定执行后台代码
lovcal 2006-10-29
  • 打赏
  • 举报
回复
举个例子:
订单生成的模块,也就是说一张订单录入,然后提交,但是,提交的过程中对内容进行审核,比如说品种价格,剩余量,合同的约制,到期时间约制之类的,恐怕都是一项项在服务器端检查的,还有很多的约制关系。在审核有问题时,需要交互询问操作者是选择继续还是返回修改,等等,我确实想像不出怎么个比较方便……

大家不妨说说一般都是怎么处理这类问题的呀,事实上看起来就是只有把各种检查用写成独立分别的服务器函数,用Ajax来实现,

syeerzy(快乐永远*先天下之乐而乐*后天下之忧而忧*) :

S ---> C(yes) ---> S
S ---> C(no)


你想成在S里面插入一段C ,当然就被绑了手脚.

你想成根本就是两段S 不就简单了么
--------------------------------->这应该与我刚刚说得比较吻合!



lovcal 2006-10-29
  • 打赏
  • 举报
回复
哇……多了两天就这么多信息啊,非常感谢各位大虾的指点

sp1234(没有心情,没有心情短语)
WebForm下使用messageBox,这不算经典问题吧?应该是缺乏想象力,只能想象到单机而不是远程服务器是个什么样子(想象一下锁在机房里的一堆“刀片”,你如何去看MessageBox?)。
------------------------〉
这位老兄,首先非常感谢,但是我想我在这说的就是WebForm中如何实现服务器端程序与客户端交互的问题,事实上,也就是说服务器端程序有一段业务处理逻辑,处理到一半时需要得到确认的反馈。

因为我这是个业务处理平台,所以逻辑通常都是比较多的,而不是仅仅是个填表,提交之类的网页

我之所以这么说这个问题,因为我发帖之前查了一下以前的问题,确实有听多人问过,关于这种交互的需求,但听多人答的都是用Response.Write之类的方法

所以再问,怎么好像还是没有人从正面的回答我这个问题呢?大家知道的可以实现的方法应该挺多的,但……呵呵!

偶确实刚刚从WinForm转过来不久,WebForm编程确实懂得不太多,还是麻烦各位多多指教了……



股神 2006-10-28
  • 打赏
  • 举报
回复
up
poorman19821018 2006-10-28
  • 打赏
  • 举报
回复
System.Window.Form.MessageBox 这个类如果在服务器端用的话,只会在服务器生成一个Messagebox对象,没有任何意义,客户端没有任何反应.
要实现象楼主那样的描述的话,估计只有AJAX能实现了.
syeerzy 2006-10-28
  • 打赏
  • 举报
回复
S ---> C(yes) ---> S
S ---> C(no)


你想成在S里面插入一段C ,当然就被绑了手脚.

你想成根本就是两段S 不就简单了么
syeerzy 2006-10-28
  • 打赏
  • 举报
回复
呵呵,楼主说错了,不是"发觉没有可用方法",而是"没有发觉到那些可用的方法".

从楼主那几句话看出对Web编程很生啊,多努力,Response.Write是什么意思都不明白? 客户端和服务器端的代码分别什么时候进行也不明白....


  • 打赏
  • 举报
回复
楼主对Response.Write、Attribute、Ajax等方法都那么精通可以信心十足地否决那些方向,还会不知道如何判断客户端对话框吗?
  • 打赏
  • 举报
回复
WebForm下使用messageBox,这不算经典问题吧?应该是缺乏想象力,只能想象到单机而不是远程服务器是个什么样子(想象一下锁在机房里的一堆“刀片”,你如何去看MessageBox?)。
Ivony 2006-10-28
  • 打赏
  • 举报
回复
WebForm有WebForm的设计方法,并且比WinForm复杂多了,楼主最好多一些精力投入到WebForm的用户界面上来……
REIYA 2006-10-26
  • 打赏
  • 举报
回复
Panel ~
lovcal 2006-10-26
  • 打赏
  • 举报
回复
哪个?
lizhizhe2000 2006-10-26
  • 打赏
  • 举报
回复
在CodeProject中的那个不行吗?我好像见到你问过这个问题
发帖
.NET社区

6.1w+

社区成员

.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
帖子事件
创建了帖子
2006-10-26 10:26
社区公告

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

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