2012-08-08 226 views
0

我創建了一個簡單的應用程序,其中我有一個下拉菜單和一個按鈕以及兩個文本框。 當我選擇第一個選項時,它應該填充textbox1中的文本,並單擊按鈕時,它應該使用textbox1文本並在textbox2中編寫一個句子。現在,當我在下拉列表中選擇另一個選項時,它會給出應用程序錯誤。在選擇下拉選項時出錯

我的代碼:

protected void ddSelectOption_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     string cp = "Optionone"; 
     if (ddSelectOption.SelectedValue == cp) 
     { 
      txtwrite.Text = "tagit"; 
     } 
     else 
     { 
      txtwrite.Text = "dynamictag"; 
     } 
    } 

    protected void btnsubmit_Click(object sender, EventArgs e) 
    { 
     string cp = "Optionone"; 
     if (ddSelectOption.SelectedValue == cp) 
     { 
      txttag.Text = "<u "+ txtwrite.Text + ">" + "hai </u>"; 
     } 
     else 
     { 
      txttag.Text = "<u "+ txtwrite.Text + ">" + "hai </u>";   } 
    } 
} 

誰能幫我。

+0

什麼錯誤?哪裏? – Jan 2012-08-08 10:47:03

+0

這是ASP.NET嗎?如果是這樣,請標記爲這樣。另外,請發佈錯誤消息。請查看http://tinyurl.com/so-hints以獲取有關提問的建議。 – 2012-08-08 10:48:25

+0

點擊按鈕,您想要使用'textbox1'中的文本並在'textbox2'中寫入一個句子。那你爲什麼再次比較cp和SelectedValue?讓問題更清楚 – Cdeez 2012-08-08 10:52:52

回答

1

看起來像Asp.net警告你,你正在嘗試提交一個HTML字符串(讓你開放給XSS攻擊)。您需要首先清理您的輸入,例如刪除標記,然後進行或者如果你確定它的罰款,然後你可以把請求驗證關閉通過設置:

validateRequest = false;

如果這是.NET 4.0,你將不得不使用這樣的:

<httpRuntime requestValidationMode="2.0" />

要強制它使用舊的2.0驗證模式,因爲4.0在解析page指令之前執行請求驗證。

+0

我試圖刪除標籤其工作正常,但是當我試着用標籤和'validateRequest = false;'我得到相同的錯誤。 – SDLBeginner 2012-08-08 12:02:14

+0

你把'validateRequest = false;'放在哪裏? – dtsg 2012-08-08 12:10:06

+0

in'<%@ page ValidateRequest =「false」%>'in web config''我保留了它 – SDLBeginner 2012-08-08 12:41:25

0

試試這個:

if (ddSelectOption.SelectedValue!=null) 
if (ddSelectOption.SelectedValue.ToString() == cp) 
... 

一切都會好的。

+0

嗨llia ..我用你建議。我仍然得到相同的錯誤:從客戶端檢測到有潛在危險的Request.Form值(txttag =「 hai」)。 – SDLBeginner 2012-08-08 11:19:00