我正在使用,< base href =“http:// localhost:80 /”>在我的母网页面中,
现在,当我在更新面板中的内容页面(位于localhost:80 / directory1 / directory2)上使用dropdownlist控件时,selectedindexchanged事件无效.
我试图搞清楚,但在firefox控制台的网络选项卡中,我发现请求只是在basehost:80 / contenpage.aspx而不是localhost:80 / directory1 / directory2 / contenpage.aspx中查找基本URL的内容页面给出错误
The resource cannot be found.
解决方法
相关情况是默认情况下,表单操作在ASP.NET中设置为相对URL:
<form id="ctl01" action="./webform1" method="post"> <!-- ... --> </form>
如果使用基本标记,则更改页面用于解释相对URL的基本路径.在您的情况下,基本URL指向显然无法提供应用程序页面的路径.为了解决这个问题,我会重新考虑是否需要基本标签.如果是,则应指向能够为应用程序页面提供服务的URL.要动态设置应用程序基本路径的基本路径,可以使用以下代码:
protected void Page_Load(object sender,EventArgs e) { baseCtrl.Attributes["href"] = new Uri(Request.Url,"/").OriginalString; }
作为一种解决方法,如果您需要保持基本标记不变,我还尝试通过将以下代码集成到母版页中来将表单操作设置为绝对URL:
protected void Page_Load(object sender,EventArgs e) { Page.Form.Action = Request.Url.OriginalString; }
这适用于我的小样本,以便页面可以成功执行PostBack.虽然表单被发布回到相同的位置,就好像没有基本标记一样,但可能会有一些副作用,因为页面上的其他资源(例如CSS,JavaScript文件等)也可能会被相对URL引用因此可以从另一个位置检索.因此,我仍然建议在使用此解决方案之前重新评估基本标记.