-1

私はこのC#コードを持っています:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.OleDb;
using System.Data;

public partial class UpdateArticle : System.Web.UI.Page
{
    public string ArticleTitle, ArticleBody, PostDate;

    protected void Page_Load(object sender, EventArgs e)
    {
        string ArticleId;
        try
        { ArticleId = Request.QueryString["ArticleId"].ToString();
            string dpath = Server.MapPath(@"App_Data") + "/MySite.mdb";
            string connectionstring = @"Data source='" + dpath + "';Provider='Microsoft.Jet.OLEDB.4.0';";
            string q = string.Format("select *  from tblArticles where ArticleId={0}", ArticleId);
            OleDbConnection con = new OleDbConnection(connectionstring);
            OleDbCommand cmd = new OleDbCommand(q, con);
            con.Open();
            cmd.ExecuteNonQuery();
            OleDbDataAdapter da = new OleDbDataAdapter(cmd);
            DataSet ds = new DataSet();
            da.Fill(ds, "tbl");
            con.Close();
            ArticleTitle = ds.Tables[0].Rows[0]["ArticleTitle"].ToString();
            ArticleBody = ds.Tables[0].Rows[0]["ArticleBody"].ToString();
            PostDate = ds.Tables[0].Rows[0]["PostDate"].ToString();


        }
        catch
        { }
        string NewArticleTitle, NewArticleDate, NewArticleBody, ArticleId1;  
        try
        {

                NewArticleTitle = Request.Form["ArticleTitle"].ToString();
                NewArticleDate = Request.Form["ArticleDate"].ToString();
                NewArticleBody = Request.Form["ArticleBody"].ToString();
                ArticleId1 = Request.QueryString["ArticleId"].ToString();
                string dpath = Server.MapPath(@"App_Data") + "/MySite.mdb";
                string connectionstring = @"Data source='" + dpath + "';Provider='Microsoft.Jet.OLEDB.4.0';";
                OleDbConnection con = new OleDbConnection(connectionstring);
                string QuaryString = string.Format("insert into tblArticles(ArticleTitle, ArticleBody, PostDate) values ('{0}','{1}','{2}') where ArticleId='{3}'", NewArticleTitle, NewArticleBody, NewArticleDate, ArticleId1);
                OleDbCommand cmd = new OleDbCommand(QuaryString, con);
                OleDbDataAdapter da = new OleDbDataAdapter(cmd);
                DataSet ds = new DataSet();
                da.Fill(ds, "tbl");
                con.Close();
            }
            catch { }
       // Response.Redirect("ArticlesTable.aspx");

}}

私のコードの問題は、この行になると:

ArticleId1 = Request.QueryString["ArticleId"].ToString();

try ブロックから抜けます。上記の数行に、次のコードを書きました。

ArticleId = Request.QueryString["ArticleId"].ToString();

そして、それはうまく機能します。では、なぜ下の行が機能しないのでしょうか。初めてデバッグするとき: 1 : http://i.stack.imgur.com/CfKXL.png ASPX ページでフォームを送信した後: これは aspx コードです:

<b>
כותרת המאמר :<br /></b><input id="Text1" type="text" name="ArticleTitle" value="<%=ArticleTitle %>"/><p></p>
<b>

תאריך פרסום: <br /></b><input id="Text2" type="text" name="ArticleDate" value="<%=PostDate %>"/><p></p>

<b>

תוכן המאמר: <br /></b> <textarea rows="10" cols="60"  name="ArticleBody"><%=ArticleBody %></textarea>
<br />
<input id="Reset1" type="reset" value="נקה" />
<input id="Submit1" type="submit" value="שלח כתבה!" />
</form>
<p></p><p></p>

<a href="Default.aspx">חזור לדף הבית</a>

そして、送信後 (var が Id 値を取得していません!)ここに画像の説明を入力

4

2 に答える 2

0

コードが例外をスローしています。これRequest.QueryString["ArticleId"]は、スコープ外になったことが原因である可能性があります。なぜこうなるのかはわかりませんが、これが最も可能性の高い説明です。そこにブレークポイントを変更catch {}catch (Exception e) {}て設定し、例外を検査できるようにします。これが起こっていると仮定してArticleId1、最初の試行の外側を宣言し、 ArticleId(最初の試行で) 設定した後の行に設定します。

于 2013-01-10T21:31:23.777 に答える
0

コードがtry予期せずブロックから突然終了する場合は、例外をキャッチしています。

catch ステートメントがその例外をスローする場合、その例外は catch { }表示されません。

完全に削除しtry/catchてエラーが自然に発生するようにするか、それをキャッチして何かを行う必要があります。

catch (Exception ex)
{
   // However you want to handle things going wrong.
}
于 2013-01-10T21:27:43.460 に答える