2011-08-30 113 views
1

我在asp.net 4.0中工作 有什么办法检查服务器端,如果我们要离开页面并将控件重定向到另一个页面,然后检查当前窗体,是否有任何被修改的字段?如果是,则先保存该记录,然后重定向到新页面。 有什么办法可以在服务器端检查这个吗? (代码后面的文件)在服务器端验证表格

+0

道歉,如果我没有正确理解你的问题。但肯定你有某种链接或按钮触发重定向?你能不能在服务器端触发一个事件,在那里你可以做相关的验证,然后适当保存记录? – Bobby

+0

我不知道如何检查窗体上是否有变化。我必须检查变化。我有事件处理。 – asma

回答

1

啊我明白了。作为一个例子,假设你有一个用户类,您将使用在页面加载事件问题

public class User 
    { 
     public int Id { get; set; } 
     public string Username { get; set; } 
     public string Address { get; set; } 
    } 

,以显示你的页面形式加载与培训相关值这个对象,他们使用加载的对象,以显示该网页的形式。我们可以称这个对象为“LoadedUser”

用户点击重定向链接后,您需要处理该事件(我知道您正在做这件事),并在此事件中使用页面窗体上的当前值创建一个新的User对象,那么我们现在可以调用这个对象“NewLoadedUser”,我们将使用IEquatable接口比较LoadedUser和NewLoadedUser对象。

所以,尽管这增加了用户类

public class User: IEquatable<User> 
{ 
    public int Id { get; set; } 
    public string Username { get; set; } 
    public string Address { get; set; } 

    public override int GetHashCode() 
    { 
     return Id^Id.GetHashCode(); // or whatever 
    } 

    public override bool Equals(object other) 
    { 
     return this.Equals(other as User); 
    } 

    public bool Equals(User other) 
    { 
     return (other != null && 
       other.Id == this.Id && 
       other.Username == this.Username && 
       other.Address == this.Address); 
    } 
} 

在你的代码这样做,你应该能够在两个对象比较喜欢在这之后。

bool areEqual = NewLoadedUser.Equals(LoadedUser); 

然后你可以使用areEqual bool标志来更新记录与否。

希望这会有所帮助

+0

好的,我会尽快试用这个..非常感谢:) – asma