什么会导致ASP.NET验证程序不在已部署的站点上触发?

时间:2009-02-25 01:39:06

标签: asp.net validation server-side client-side

在当地它有效,我知道它“它适用于我的机器”综合症但我不明白为什么。

简单的网页,字段,必填字段验证器,例如

<asp:textbox id="tbEmail" runat="server" CssClass="field"></asp:textbox>                                            <asp:requiredfieldvalidator id="Requiredfieldvalidator2" runat="server" Display="Dynamic" ControlToValidate="tbEmail" ErrorMessage="Email is required" CssClass="required"></asp:requiredfieldvalidator>

按钮

<asp:button id="btnSendRequest" runat="server" Text="Submit" CausesValidation="True"></asp:button>

本地触发并且代码没有运行,在已部署的版本上,验证器不会触发并且代码会运行。

应该很简单但是我已经盯着它看了太久。

谢谢大家 - 塔里克

5 个答案:

答案 0 :(得分:1)

我在考虑同样的事情 - asp_regiis将在您网站的根目录中创建aspnet_client文件夹。还要注意报告的javascript错误,它们将有助于诊断。

答案 1 :(得分:0)

我不确定这是否与您的.NET版本相关,但您可能必须在服务器上运行aspnet_regiis -i才能安装脚本以进行验证。请在做任何事之前仔细检查一下:)

我希望这能让你朝着正确的方向前进。

http://msdn.microsoft.com/en-us/library/k6h9cz8h(VS.80).aspx

答案 2 :(得分:0)

在这种情况下,我发现将本地获得的原始HTML输出与部署的服务器上的输出进行比较会很有帮助。正如埃里克指出的那样,你可能错过了已部署版本的验证javascript ......但这肯定会告诉你。

答案 3 :(得分:0)

区别可能是在本地测试中,您正在触发客户端验证器,而在服务器上只有服务器端。 确保在方法中添加IsValid,例如:

void MyClickHandler(object sender, EventArgs e)
{
   if( IsValid)
   {
      //rest of the code
   }
}

答案 4 :(得分:0)

安装Fiddler:Fiddler并观看流量。加载页面时是否收到任何404或500 HTTP错误?它可能试图加载必要的客户端验证文件,但遇到问题。