[三个问题]有谁知道axWebBrowser1.Navigate()里面四个参数具体含义?如何实时获取正在浏览的页面标题?如何结束ASP.NET程序?

zjmotion 2006-08-03 12:55:11
问题一、
我使用了axWebBrowser控件,有三个按纽,每点击一个按纽就用axWebBrowser1.Navigate()方法打开一个网页,但我发现了一个非常致命的问题,就是它会把网页放进缓存,比如我第一次点击按纽把网页打开,然后对网页里的数据进行更改,然后再次点击按纽必须刷新才能浏览更改后的网页,这样的界面实在是太不友好了,哪有每次打开网页还要按F5刷新一下的呢?
我想问一下能不能把axWebBrowser的缓存(Cash)关闭,让它每一次都是从服务器请求加载更新?
谢谢!!!

问题二、
在窗体里面放上一个axWebBrowser控件,想让WebBrowser正在浏览的网页标题(title)显示在Form的Text上,想法是这样的:在axWebBrowser1.Navigate()后加一句this.Text = axWebBrowser1.LocationName;
但这样会有一个问题,不能实时获取title,只能在下一次触发后才能改变。应该是axWebBrowser1在第一次加载页面时还没有LocationName。这怎么样解决呢?总不能每次窗口的Text显示的是上一个页面的title吧?
再一次感谢!

问题三、
如何结束asp.net程序?WinForm里可以用Application.Exit()或this.Close()方法结束,ASP.net里呢?return只是提前结束方法,但方法以后的语句应该还是会执行的,比如
//页面加载
private void Page_Load(object sender, System.EventArgs e)
{
  if(noOrder)//没有权限退出
  {
   return;
  }


第一次加载是没有问题的,假设页面有一个提交按纽,用户进入页面的时候是有权限的,他已经看到了页面和提交按纽了,如果恰恰是这个时候用户的权限被修改,他此时已经没有了权限,当他点击提交按纽后,那么,就会触发两个事件:Page_Load和Button_Click
在Page_Load事件里,很显示,他会因为没有权限而提前return。但是,在Button_Click这个事件里却没有判断权限的语句,那么,我要问的就是:Button_Click这个事件是不是会被正常触发?
如果是的话,那么该如何避免?不可能在每个方法里都进行权限判断吧?我想如果有一个Application.Exit()事件将会简单一些。Response.End()有用吗?
再三感谢!
...全文
559 15 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
zjmotion 2006-08-05
  • 打赏
  • 举报
回复
等我做完手头项目有时间了好好测试~
tcx1986 2006-08-03
  • 打赏
  • 举报
回复
按照你说的,那就可以在重载时判断权限,没有权限将其退回到logon画面,要再次登陆则就捕可以实现了
zjmotion 2006-08-03
  • 打赏
  • 举报
回复
TO:假设你在登陆页面提交按钮后判断权限,有权限则登陆成功,没权限则退出登陆

你这是一种理想状态,如果是用户至始至终都没有权限,他进不去页面,当然不会有机会触发到Button。这种情况下是可以的。

但我所假设的是一种非常状况,就是用户刚开始拥有权限,他登陆成功了,也看到了页面和Button,也恰恰是这个时候,管理员把他的权限收回。理论上他应该没有权限在这个页面进行任何操作。但是如果他这时点击了Button按纽,那么,他仅仅只是在通过Page_Load事件中被警告没有权限,问题就是如何在Page_Load捕获用户没有权限后终止他的一切操作,让程序不再继续执行下去?Response.End()有用吗?
tcx1986 2006-08-03
  • 打赏
  • 举报
回复
to 点击了Button1之后,首先会触发Page_Load...
假设你在登陆页面提交按钮后判断权限,有权限则登陆成功,没权限则退出登陆
zjmotion 2006-08-03
  • 打赏
  • 举报
回复
在数据库中建立一个记录权限的列,每次重载页面时判断,下面是我以前的一个OA
private void Page_Load(object sender, System.EventArgs e)
{
if(!this.Page.IsPostBack)
{
    }

}

是的,在Page_Load里能判断出用户不具有权限,而问题是此时该用户已不仅仅只触发Page_Load事件,下面还有一个Button_Click事件。比如:

private void Page_Load(object sender, System.EventArgs e)
{
if(!this.Page.IsPostBack)
{
if(noorder)
{
Response.Write ("对不起,没权限");
return;
}
    }

}

private void Button1_Click(object sender, System.EventArgs e)
{
Response.Write("我照样可以执行");//假设操作
}

点击了Button1之后,首先会触发Page_Load,被告知无权限然后return,但此时的return只是退出了Page_Load这个事件,接下来执行的将会是Button1_Click事件。也就是说权限判断形同虚设。
tcx1986 2006-08-03
  • 打赏
  • 举报
回复
private void Page_Load(object sender, System.EventArgs e)
{
if(!this.Page.IsPostBack)
{
SessionObject obj = (SessionObject) this.Session["UserInfo"];
this.ViewState["UserID"] = obj.User.ID;//得到ID
if(((SessionObject) this.Session["UserInfo"]).User.Role == 1)//Role 是数据库中的权限
{
strID = "0";
}
else
{
....
}
}


}
tcx1986 2006-08-03
  • 打赏
  • 举报
回复
to 楼上没有看明白我最后一个问题的意思,重载判断是没有用的
在数据库中建立一个记录权限的列,每次重载页面时判断,下面是我以前的一个OA
private void Page_Load(object sender, System.EventArgs e)
{
if(!this.Page.IsPostBack)
{

}
zjmotion 2006-08-03
  • 打赏
  • 举报
回复
解题一:
知道那四个参数道具体含义的人或许不多了(咳~),即使知道四个参数中第一个是可以控制NoWriteToCash和NoReadFromCash的,但也不知道如何设置该参数的值,干脆放弃,以后再研究。

因为发现了axWebBrowser1 的 NavigateComplete2() 方法解决了实时显示Text问题,那么,就可以通过axWebBrowser1 的 CtlRefresh()来解决第一个问题,在NavigateComplete2()方法里加一句:
this.axWebBrowser1.CtlRefresh();
这样浏览器加载页面完成后会自动刷新一次。
当然仅仅这样是不够的,因为会造成不必要的刷新。而只有执行过axWebBrowser1.Navigate2()才是需要刷新的,定义一个bool变量 private bool refresh = fasle;
在axWebBrowser1.Navigate2();方法之前改变refresh的值为:refresh = true;//打开刷新

在axWebBrowser1.NavigateComplete2()方法下
if(refresh)
{
axWebBrowser1.CtlRefresh();
refresh = false;//关闭刷新
}

旁门左道,仅解燃眉之急,望有高人授以正法~~
zjmotion 2006-08-03
  • 打赏
  • 举报
回复
http://www.codeproject.com/csharp/multitabwebbrowser.asp

My English Is Poor,I Could Not Understand All Of The Words.
Mybe I Should Study It By Myself, But I Have Too Title Time To Do that Now.
Knight94 2006-08-03
  • 打赏
  • 举报
回复
对于3来说,没有一个好的办法,毕竟b/s结构,服务器端是为多个client服务的,无法确切地判断。

你要关闭,可以通过kill系统的aspnet_xp.exe这个进程。
Knight94 2006-08-03
  • 打赏
  • 举报
回复
对于WebBrowser的控件操作,参看这个例子你就会很明白
http://www.codeproject.com/csharp/multitabwebbrowser.asp
zjmotion 2006-08-03
  • 打赏
  • 举报
回复
刚刚研究了一下WebBrowser的方法,发现有一个“加载完成”触发事件!Good!
问题二结束!只有第一个和第三个,慢慢研究中,大家加油啊~
zjmotion 2006-08-03
  • 打赏
  • 举报
回复
楼上没有看明白我最后一个问题的意思,重载判断是没有用的。其实我的想法很简单,说白了就是权限判断,而权限判断应该放在Page_Load里,当页面加载时就判断,如果有权限就继续,无权限就退出,所以这个判断将不考虑是否Page.IsPostBack一律执行。然而问题就发生在用户进去页面时是有权限的,但恰恰页面加载完后他的权限被修改变成无权限了,此时他点击按纽,那么Poad_Load可以正常地判断此用户是非法用户提前退出,但它仅仅是退出Page_Load方法,Button_Click怎么办?还是照常执行?那么权限问题将会是一个很大漏洞,解决方法就是在Page_Load里判断权限出错时,用一条语句退出所有程序,比如WinForm的Application.Exit();可以将程序结束。但asp.net应该用什么语句呢?
tcx1986 2006-08-03
  • 打赏
  • 举报
回复
if(!this.Page.IsPostBack)
{
...
}
tcx1986 2006-08-03
  • 打赏
  • 举报
回复
重载页面

111,094

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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