2010-06-01 50 views
1

我从asp.net开始,遇到一些我不明白的问题。问题是,我正在建立一个新闻网站。每个新闻都有一个标题和正文。我有一个页面可以插入新闻,这个页面为每个字段(标题和正文)使用一个文本框,点击提交按钮后,一切正常并将值保存在数据库中。另外还有一个可以阅读新闻的页面,我为每个营地使用标签,这些标签在Page_Load中定义。现在我在可以编辑新闻的页面上遇到问题。我在Page_Load中加载了两个文本框(标题和正文),到目前为止非常好,但是当我更改文本并单击提交按钮时,它忽略了我在文本中所做的更改并保存加载到Page_Load中的文本。更新文本框的问题ASP.NET

此代码不显示任何数据库连接,但您可以理解我在说什么。

protected void Page_Load(object sender, EventArgs e) 
    {   
     textboxTitle.Text = "This is the title of the news";  
     textboxBody.Text = "This is the body of the news ";   
    } 

我加载页面,在文本中进行更改,然后单击“提交”。

protected void btnSubmit_Click(object sender, EventArgs e) 
    { 
     String title = textboxTitle.Text;   
     String body = textboxBody.Text; 
     Response.Write("Title: " + title + " || "); 
     Response.Write("Body: " + body); 
    } 

什么也没有发生,在文本框的文本始终是我在Page_Load加载的一个,我该如何更新文本框的文本?

回答

5

Page_Load每次请求页面时都会运行。如果您正在执行一次性设置操作来填充文本框,请不要在每次请求时重新填充它们。

您可以通过检查IsPostBack标志来仅执行一次初始化代码。

protected void Page_Load(object sender, EventArgs e) 
    {   
     if (!Page.IsPostBack) 
     { 
      textboxTitle.Text = "This is the title of the news";  
      textboxBody.Text = "This is the body of the news ";   
     } 
    } 
0

听起来像是你需要检查的IsPostBack变量,像这样:

if(!Page.IsPostBack) 
{ 
    textboxTitle.Text = "This is the title of the news";  
    textboxBody.Text = "This is the body of the news "; 
} 

这样的话,你只设置控件的德文本上的第一个页面请求。或者,您可以在HTML控件本身上指定此文本,而不使用.cs中的代码。