2012-08-08 180 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