2013-09-26 33 views
0

我很難調試我的任務。該任務由一個單獨的aspx頁面提供。我相信我的困難部分是由於我無法通過使用斷點在Visual Studio中正確調試我的aspx頁面而導致的。ASP.NET內聯編碼基礎問題

我的第一個問題:這可能嗎?

我在網上發現的所有資源都表示解決方案是創建一個單獨的類文件。

在我這樣做之前,我只是想確保在腳本塊中使用斷點沒有其他方法。

我的下一個問題與內聯腳本塊的格式有關。我特別困惑的是使用全局變量。既然它是在腳本標記中,是否還有什麼不同之處需要我注意,比如當它們超出範圍時?如果我在腳本的全局範圍內聲明一個ArrayList並在按鈕上單擊使用Add方法,那麼結果是否與後面的類似代碼的結果相同?

下面是一些簡單的代碼來證明我的困惑:

<script runat="server"> 

    ArrayList al = new ArrayList(); 

    protected void Button1_Click(object sender, EventArgs e) 
    { 
     al.Add(TextBox1.Text); 
    } 

</script> 
+2

當然,您應該使用'List a1 = new List ();'而不是'ArrayList al = new ArrayList();'。 – jp2code

回答

0

這是一個多次被問及的常見問題。見

Why can't I debug my asp.net web app

Why can't I debug my asp.net web project anymore?

Why am I unable to Debug my ASP.NET website in Visual Studio?

Unfortuantely,因爲它可以從多個來源產生,你幾乎必須通過的可能出現的問題的決議棧工作。

+0

感謝您的迴應,但不幸的是沒有人幫助我。我保存我的文件並按下Ctrl + Shift + w並通過ASP.NET開發人員服務器在瀏覽器中啓動。我是否需要使用不同的方法? – Justin

0

是絕對的ASPX文件中沒有問題的調試代碼。我一直這樣做。如果它真的會編譯,那麼你應該能夠在你的代碼中設置斷點。你不清楚你到底有什麼問題?

關於你的第二個問題,頁面生命期間存在「全局」變量。但請注意,該頁面只在加載時才存在。當頁面已經渲染時,不再需要它。

+0

我添加一個斷點並按下ctrl + shift + w,即使看到代碼執行的結果(例如事件),斷點也不會觸發。 – Justin

0

KB Article 303247

ASP.NET支持兩種創作頁的方法:

  • 主代碼
  • 代碼隱藏

主代碼

聯機代碼是c直接嵌入到ASP.NET頁面中的ode。以下代碼代表包含內嵌代碼的示例ASP.NET頁面:

Myinlinecode。ASPX

<%@ Language=C# %> 
<HTML> 
<script runat="server" language="C#"> 
void MyButton_OnClick(Object sender, EventArgs e) 
{ 
    MyLabel.Text = MyTextbox.Text.ToString(); 
} 
</script> 
<body> 
    <form id="MyForm" runat="server"> 
    <asp:textbox id="MyTextbox" text="Hello World" runat="server"></asp:textbox> 
    <asp:button id="MyButton" text="Echo Input" OnClick="MyButton_OnClick" runat="server"></asp:button> 
    <asp:label id="MyLabel" runat="server"></asp:label> 
    </form> 
</body> 
</HTML> 

這個例子做,如果你想/需要的東西是全球性的,很好用的東西都在你的HTML額外的控制手段。

考慮的MS代碼這個修改後的版本:

<%@ Language=C# %> 
<HTML> 
<script runat="server" language="C#"> 
void MyButton_OnClick(Object sender, EventArgs e) 
{ 
    MyLabel.Text = MyTextbox.Text.ToString(); 
    hidden1.Value = DateTime.Now.ToString(); 
} 
void Button2_Clicked(Object sender, EventArgs e) 
{ 
    MyLabel.Text = string.Format("MyButton was clicked at {0}.", hidden1.Value); 
} 
</script> 
<body> 
    <form id="MyForm" runat="server"> 
    <asp:textbox id="MyTextbox" text="Hello World" runat="server"></asp:textbox> 
    <asp:button id="MyButton" text="Echo Input" OnClick="MyButton_OnClick" runat="server"></asp:button> 
    <asp:label id="MyLabel" runat="server"></asp:label> 
    <hr/> 
    <asp:HiddenField ID="hidden1" runat="server" /> 
    <asp:button id="Button2" text="Button2" OnClick="Button2_Clicked" runat="server"></asp:button> 
    </form> 
</body> 
</HTML> 

通知的asp.HiddenField用於數據存儲在HTML頁面上,並且可以稍後訪問。

如果您想了解更多相關信息,請使用「aspx in-line code」進行搜索。

+0

使用隱藏字段而不是全局作用域變量會更好嗎? – Justin

+0

大約相同的事情。隱藏字段更易於編碼和掌握概念。 – jp2code

0

如果它不被觸發,請檢查Button1是否仍然綁定Button1_Click事件。當你一直玩弄代碼時,你可能已經銷燬了事件綁定。請檢查ig事件是否仍然綁定到Button1