我的一个对象的string ImportantName
必须是唯一的,并且通常用于网址路由,即http://www.mywebsite.com/objects/{ImportantName}
。
我可以允许(并且需要允许)对ImportantName
的更改,但是当我这样做时,我需要执行额外的服务器端验证,并在名称更改的情况下重定向到不同的URL。
当然我可以添加一些jQuery来检测值的变化,或者比较服务器上的旧/新名称,但是必须有更好的方法,对吧?
以下任何一种都适合我:
ImportantName
已根据提供的模型绑定ImportantName
OldImportantName
是否已更改,并仅将该值发送给服务。现在我正在解决此问题,方法是将NewImportantName
和FormModel
添加到{{1}}并在发布后在服务器上进行比较。
答案 0 :(得分:0)
- 如果已从基于提供的模型绑定
的初始值更改,则仅发送ImportantName- 添加一个布尔字段以检测ImportantName是否已更改,并仅将值发送给服务。
如果要实现上述任一选项,则只能使用JQuery在客户端完成它们。我是这样说的,因为FORM已经在客户端浏览器上呈现,并且应该在客户端通过更改DOM来管理/排除POST操作中的任何属性(如果你不想使用AJAX,但是如果你决定使用AJAX,那么你只能使用JQuery从客户端POST你感兴趣的属性。实际上,观察模型属性的任何更改也需要使用JQuery在客户端完成。
所以在这种情况下,我更愿意解决这个问题,正是你现在如何解决它,但几乎没有变化。我没有向formModel包含OLD / NEW值,而是我只有一个属性OLD,我将使用JQuery OnChange识别对它的更改。然后采取必要的行动。如果您不想使用JQuery,那么在FORM POST上,您可以使用服务器端的ActionFilter来检查模型中的更改(您已经编写了一些代码来检查模型中的更改,AFAIK在HTTP世界中没有默认机制)识别属性更改并进行必要的服务器重定向。
或者,您可以使用KnockoutJS或AngularJs之类的JavaScript框架,并获得Observable数组或集合,可用于在客户端轻松检测属性更改。通过这些框架采取必要的行动和POST只需要和感兴趣的参数。