【发布时间】:2011-04-26 15:59:50
【问题描述】:
我正在使用 ASP.NET MVC 3,并且需要检测服务器端的表单字段是否已更改。我知道使用隐藏字段的技巧,但我想知道是否有办法只使用 API 来做到这一点?
基本上,我的模型有编辑屏幕,其中一个字段是可以指定的可选 id。如果指定了该字段,我必须确保它是唯一的(没有其他模型具有它)。所以在编辑控制器上,我想运行验证,但前提是该字段已更改。
请注意,我不需要知道以前的值和新的值,只要字段值发生了变化。
【问题讨论】:
-
我对 MVC 模式不是很熟悉,但我会设置一个 javascript 来捕捉对文本框的更改并使用 AJAX 来检查该 id 是否已经存在。
-
为什么不每次都运行验证?
-
@hyp js 没问题,但我还需要服务器端解决方案(如上所述)。 MVC3有一个属性@Remote,可以用于AJAX远程验证
-
@jfar 如果该字段包含可选的 id(例如 123)并且尚未更改,那么我不必进行数据库调用。如果它已被更改,那么我会进行数据库调用以查看其他客户是否具有相同的 id(因此,引发模型验证错误)
-
@zam6ak - 在写入期间通过 ID 调用进行额外选择不会伤害您。我会说它是一个简单的权衡,因为你引入了脏跟踪的复杂性。
标签: c# validation asp.net-mvc-3