我正在以编程方式将Webcontrols添加到用户控件中我还添加了一个javascript事件,将controlID作为参数传递但是clientID是我指定的那个,它不包含asp.net生成的那个
var txt = new TextBox();
txt.ID = "MyID"+Number;
chkBox.Attributes.Add("onClick", "EnableTxtBox('" +txt.ClientID + "');");
Run Code Online (Sandbox Code Playgroud)
我可以通过添加父控件ID来解决此问题
chkBox.Attributes.Add("onClick", "EnableTxtBox('" + this.ClientID+"_"+txt.ClientID + "');");
Run Code Online (Sandbox Code Playgroud)
生成客户端ID的页面生命周期是什么?
我有一个ASP.Net应用程序,我注意到通过使用分析器,在我的页面运行之前发生了大量的处理.在我的应用程序中,我们没有使用viewstate,asp.Net会话,我们可能不需要使用asp.net页面生命周期所带来的大部分开销.还有其他一些我可以轻易继承的课程,它会删除所有的Asp.Net内容,让我自己处理这个页面吗?
我听说ASP.Net MVC可以大大减少页面加载,因为它不使用旧的asp.net生命周期,并且处理页面的方式不同.有没有一种简单的方法,可能只需让我的网页继承其他类来利用这样的东西.如果可能的话,我想在ASP.Net 2.0中使用一个解决方案.
我有一个按钮,用于更新数据库中的值.此值用于确定在页面上绘制的内容.但是,由于页面生命周期,页面在执行按钮单击方法之前会重绘,这意味着在重新重新加载页面之前不会反映任何更改.
什么是最好的解决方案?
澄清:
如果数据库值为1,页面有一段文字,上面写着"我喜欢猫"
按下'我讨厌猫'按钮,将数据库值设置为0
页面重新加载,但仍然说"我喜欢猫"
处理按钮单击事件,数据库值变为0
如果页面被刷新/重新加载,它现在正确地说"我讨厌猫"
它应该在单击按钮时更新.
我继承了一个Web框架,以前的开发人员在页面生命周期的init/unload方法中打开并关闭了他的数据库连接.基本上构造函数是这样的(简化以证明这一点);
public class BasePage
{
protected DBConnection _conn;
public BasePage()
{
Init += StartConnection;
Unload += EndConnection;
}
private void StartConnection(object sender, EventArgs e)
{
_conn = new DBConnection(Application["connectionstring"].ToString());
}
private void EndConnection(object sender, EventArgs e)
{
if (_conn == null)
return;
if (_conn.Connection.State == ConnectionState.Open)
{
_conn.Close();
_conn.Dispose();
}
}
}
Run Code Online (Sandbox Code Playgroud)
自从我来到这里以来,发展一直很快,所以我从未停下来考虑它.最近,访问已经开始,我们已经开始获得可怕的"Timeout过期.在从池中获取连接之前已经过了超时时间......"错误.
我目前正在查看其余的代码,寻找可能的连接泄漏,但上面的代码从来没有完全适合我,我想消除它作为潜在的罪魁祸首.那么问题;
即使在发生异常的情况下,我是否可以依赖"卸载"方法始终被调用?或者任何人都可以使用上述模式看到任何其他潜在问题,这将使其成为这些连接泄漏的主要嫌疑人?
干杯,
米奇
编辑:在调试中,即使存在异常,也始终会调用unload方法.我真的只需要知道不会调用此方法的任何情况,所以我可以弄清楚这是否需要首先进行重构.
编辑:感谢那些迄今为止做出回应的人,但请不要再提出关于IDisposable类或"使用"或"捕获/最终"模式的建议 - 这不是我的问题!我的问题是具体是一个页面是否可以运行其"Init"事件但是然后无法运行是"卸载"事件,以及为什么会发生这种情况.
c# asp.net database-connection connection-pooling page-lifecycle
这是简单的代码:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
txt.Text = "Original";
}
}
Run Code Online (Sandbox Code Playgroud)
第一次加载.文本框状态为"原始".
手动,将值更改为"不原始".
按F5.这条线:
txt.Text ="原创";
执行但输入值仍为"非原始"
但是,当我点击进入地址栏时.该值更改为"原始".
更多starnge是当地址在末尾包含'#'时(使用jquery click ...)
然后,即使我点击了地址栏,价值 仍为"非原创"
愚蠢周一早上基本/菜鸟问题......
Page_Load通常被称为ASP.Net MVC应用程序吗?
我们只有一个页面,Default.aspx.cs - 它似乎只是被调用/而不是任何子路径,所以我不认为它通常被称为...
感谢回复 - 澄清一下,我想在Page_Load中做的是安全检查,即用户登录/授权页面......听起来我应该做一个自定义属性并把它放在Controller基类上代替.
谢谢,克里斯
我的页面上有一个提交按钮(服务器端按钮).
这是我点击事件的代码:
protected void SubmitButton_Click(object sender, EventArgs e)
{
db.SaveSomething();
Page.ClientScript.RegisterStartupScript("someScriptWhichReliesOnServerData");
Response.Redirect("SomeOtherPage.aspx");
}
Run Code Online (Sandbox Code Playgroud)
现在,问题是,我使用注册JavaScript Page.ClientScript.RegisterStartupScript
,但这不会有效,因为页面没有在回发时重新呈现(这是脚本将被执行的地方),因为相反,Response.Redirect
会发生.
我能想到的唯一解决方案是让页面重定向到"意识到"我试图执行一些JavaScript,无论是QueryString,HttpContext.Current.Items还是(gulp)Session.
还有其他想法/建议吗?
编辑澄清:
JavaScript即时执行是对Facebook客户端API的调用,以发布到用户的墙上.它必须在客户端完成.我传递给脚本的东西,如"标题","消息","动作链接"等.基本上是一堆JSON.但关键是这个数据是在回发时创建的,所以我不能在客户端点击时执行这个功能.
所以我想要完成的是提交按钮点击,执行一些JavaScript并进行重定向(不必按顺序,只需要发生).
javascript asp.net redirect page-lifecycle registerstartupscript
有没有办法在Java/Tomcat/JSP Web项目中附加到asp.net的"Application_Start"和"Begin_Request"等事件?我真的不想使用JSF或额外的框架(Spring,Struts).我不希望在每页的基础上使用"jspInit"这样的东西,全局事件处理程序是目标.
如果我陷入.net的做事方式,关键是要有一个初始化IoC容器(Application_Start)的中心位置,并实现'每个请求一个数据库事务'工作流程(Begin_Request).
谢谢.
当我对整个页面进行数据绑定时,我会做这样的事情:
Blah blah ......
<%# SomeProperty == "GoodBye" ? "See you later" : "Hello" %>
Run Code Online (Sandbox Code Playgroud)
这是美丽的.但是,我经常不会对整个页面使用数据绑定,而是使用"clasic"ASP.NET方式编写内容.例如,在后面的代码我会有类似的东西:
lblSomeMessage.Text = SomeProperty == "GoodBye" ? "See you later" : "Hello";
Run Code Online (Sandbox Code Playgroud)
然后.aspx会有
<asp:label runat="server" id="lblSomeMessage"/>
Run Code Online (Sandbox Code Playgroud)
但我想这样做既 ......之类的.我想做的是不使用数据绑定语法,而是使用代码块:
<%= SomeProperty == "GoodBye" ? "See you later" : "Hello" %>
^^^^
Run Code Online (Sandbox Code Playgroud)
Noe输出标签语法.现在,问题是,这个标签何时才会被评估?假设在OnPreRender事件之前我没有设置SomeProperty属性.这太晚了吗?在我的测试中我实际上是这样做的:
<%= SomeProperty == "GoodBye" ? + new System.Diagnostics.StackTrace().ToString() : "OH NO!" %>
Run Code Online (Sandbox Code Playgroud)
并根据stacktrace:
在System.Web.UI.HtmlControls.HtmlForm.RenderChildren(HtmlTextWriter writer)的System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer,ICollection children)中的ASP.webform1_aspx .__ Renderform1(HtmlTextWriter __w,Control parameterContainer)...
它发生在渲染过程中,这是完美的.但这有保证吗?这条规则有什么问题吗?
我正在寻找类似函数的东西
protected override void OnDisappearing()
{
}
Run Code Online (Sandbox Code Playgroud)
在 Xamarin 表单中。问题是,即使我关闭手机显示屏,也会调用此功能。我正在寻找一种仅在页面更改时响应事件的功能 - 例如,菜单中的用户单击正在访问的页面以外的页面。
谢谢你的建议
page-lifecycle ×10
asp.net ×7
c# ×3
.net ×2
asp.net-mvc ×1
events ×1
java ×1
javascript ×1
jsp ×1
postback ×1
redirect ×1
servlets ×1
tomcat ×1
viewstate ×1
xamarin ×1