c# – 在主页中使用url时,asp下拉列表回发在更新面板中不起作用

前端之家收集整理的这篇文章主要介绍了c# – 在主页中使用url时,asp下拉列表回发在更新面板中不起作用前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用,< 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引用因此可以从另一个位置检索.因此,我仍然建议在使用此解决方案之前重新评估基本标记.

猜你在找的C#相关文章