2011-05-06 80 views
6

我在Web表单应用程序中执行类似下面的操作;将错误消息添加到代码后面的验证摘要中

protected void button_transfer_search_Click(object sender, EventArgs e) { 

    Page.Validate("val1"); 

    if (!Page.IsValid && int.Parse(txtArrivalDateTrf.Text) + 5 < 10) { 
     return; 
    } 

另外,我有我的aspx文件下面的代码;

<div class="search-engine-validation-summary"> 
    <asp:ValidationSummary ValidationGroup="transfer" runat="server" ShowMessageBox="false" /> 
</div> 

我的问题是如何在返回之前向页面添加错误消息,以便验证摘要可以抓取并显示它。我知道我们可以很容易地在mvc中做到这一点,但我还没有想出如何在网页表单中做到这一点。谢谢 !

+0

“退货前”,您的意思是在客户提交表单之前? – IrishChieftain 2011-05-06 13:22:50

+1

找到答案在这里:http://stackoverflow.com/questions/777889/on-postback-how-can-i-add-a-error-message-to-validation-summary几乎确切的副本:S好吧,它吸:S – tugberk 2011-05-06 13:29:12

+0

我投了我自己的问题关闭:S仍然需要4票家伙。帮助我在这里。 – tugberk 2011-05-06 13:30:22

回答

9

每当我发现这种情况,这是我做的:

var val = new CustomValidator() 
{ 
    ErrorMessage = "This is my error message.", 
    Display = ValidatorDisplay.None, 
    IsValid = false, 
    ValidationGroup = vGroup 
}; 
val.ServerValidate += (object source, ServerValidateEventArgs args) => 
    { args.IsValid = false; }; 
Page.Validators.Add(val); 

而在我的ASPX代码,我有一个ValidationSummary控件使用的ValidationGroup设置为相同的值vGroup

然后,我已经装尽可能多的CustomValidators(或任何其他类型的验证程序)的代码隐藏后,我想我只需拨打

Page.Validate() 
if (Page.IsValid) 
{ 
    //... set your valid code here 
} 

Page.Validate()调用调用所有代码 - 的拉姆达联法在插入的验证器后面,如果有的话返回false,则页面无效并返回而没有执行代码。否则,页面返回一个有效的值,并执行有效的代码。