做页面时用到了用户控件(.ascx),引用用户控件时,遇到了两个奇怪的问题:一、把用户控件拖到.aspx文件中后,运行页面,但也没内容,一片空白,什么内容都没有(.ascx内容为一个资料录入表单)
二、页面.aspx用的Button按钮失效,点击后触发不了,手动注册按钮事件后(this.UserAndCarInfo_btn_Sure.Click += new EventHandler(UserAndCarInfo_btn_Sure_Click);),也没用但是,奇怪的是,当我重建一个.aspx页面,然后再引入用户控件,添加按钮后,所有功能又一切正常了,但是,运行几次之后,过段时间,又出现上面提到的问题了在做一个新项目,尚在UI阶段,页面中并没有多余的代码,只是按照业务流程把各个页面串联起来,突然遇到这个问题,很是烦恼,但同事做的页面,却未出现此问题,而且把我的项目放在他机器上还是会出现上述问题我这边的环境是VS2005,系统Window server 2003,希望遇到过此问题的朋友给予指点一二,
二、页面.aspx用的Button按钮失效,点击后触发不了,手动注册按钮事件后(this.UserAndCarInfo_btn_Sure.Click += new EventHandler(UserAndCarInfo_btn_Sure_Click);),也没用但是,奇怪的是,当我重建一个.aspx页面,然后再引入用户控件,添加按钮后,所有功能又一切正常了,但是,运行几次之后,过段时间,又出现上面提到的问题了在做一个新项目,尚在UI阶段,页面中并没有多余的代码,只是按照业务流程把各个页面串联起来,突然遇到这个问题,很是烦恼,但同事做的页面,却未出现此问题,而且把我的项目放在他机器上还是会出现上述问题我这边的环境是VS2005,系统Window server 2003,希望遇到过此问题的朋友给予指点一二,
如果是vs2003的话,倒是怀疑是不是事件的绑定丢失了
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="AdviceRepairContent.aspx.cs" Inherits="RepairWelcom_AdviceRepairContent" %><%@ Register Src="../UserControl/AdviceRepairContent.ascx" TagName="AdviceRepairContent"
TagPrefix="uc1" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>建议维修内容</title>
<link href="../CSS/main.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" language="javascript" src="../JS/DatePicker/WdatePicker.js" /> <link href="../CSS/main.css" rel="stylesheet" type="text/css" />
</head>
<body>
<form id="form1" runat="server">
<div>
<uc1:AdviceRepairContent ID="AdviceRepairContent_UC_Show" runat="server" />
<asp:Button ID="AdviceRepairContent_btn_Pre" runat="server" OnClick="AdviceRepairContent_btn_Pre_Click"
Text="上一步" /><asp:Button ID="AdviceRepairContent_btn_Next" runat="server" OnClick="AdviceRepairContent_btn_Next_Click"
Text="下一步" /></div>
</form>
</body>
</html>后台C#代码:
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;public partial class RepairWelcom_AdviceRepairContent : PersistencePage
{
AdviceRepairContentManage ARCM = new AdviceRepairContentManage(); string WelcomeMode = null; protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
}
ARCM.FirstLoad(AdviceRepairContent_UC_Show); if (Request.QueryString["WelcomeMode"] != null)
{
WelcomeMode = Request.QueryString["WelcomeMode"].Trim();
}
} //上一步
protected void AdviceRepairContent_btn_Pre_Click(object sender, EventArgs e)
{
Response.Redirect("../RepairWelcom/RepairItems.aspx?taoist_PageStateSession=RepairItemsPage");
} //下一步
protected void AdviceRepairContent_btn_Next_Click(object sender, EventArgs e)
{
this.SavePageStateToSession("AdviceRepairContentPage");
Response.Redirect("../RepairWelcom/DistributionWork.aspx?WelcomeMode=" + WelcomeMode);
}
}
比如用户控件的路径是 /userctrl/(引用WdatePicker的路径可能是: ../my97datepicker/WdatePicker.js)
应用页面的路径是: / (引用WdatePicker的路径可能是: my97datepicker/WdatePicker.js)
他们的引用路径是不一样的,因此,你必须在用户控件里面使用下面的引用路径才可以在引用页面里面正常显示还有个比较好的方法,就是使用绝对路径来引用,asp.net里面的 ~ 符号表示当前应用的路径
因此引用路径可以写成 ~/my97datepicker/WdatePicker.js