加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 在.NET MVC2中使用Knockoutjs和服务器端验证

发布时间:2020-12-15 07:47:41 所属栏目:百科 来源:网络整理
导读:我正在使用MVC2. 什么是使用淘汰赛时建议的表单服务器端验证方式? 目前,我的大部分表单都是部分视图,其中包含带有验证属性的C#ViewModel.像这样的东西: public class SomeThingViewModel{ [Required] public string Name { get; set; } [Required] public
我正在使用MVC2.

什么是使用淘汰赛时建议的表单服务器端验证方式?

目前,我的大部分表单都是部分视图,其中包含带有验证属性的C#ViewModel.像这样的东西:

public class SomeThingViewModel
{
    [Required]
    public string Name { get; set; }

    [Required]
    public int Number{ get; set; }
}

因此,当表单提交到服务器时,我得到所有模型错误,我可以返回带有错误的表单,其中显示如下:<%:Html.ValidationMessageFor(m => m.Name)%&gt ;.然后将其重新加载到保存主页面上的表单的元素中,以便用户可以看到错误.这会杀死我所假设的淘汰表格中的任何绑定.

我真的不确定如何使用淘汰赛来解决这个问题.

解决方法

这可能很棘手,但正确的工作就像微风一样.

首先,同步您的视图模型.在淘汰赛中你有客户端,你准确地传递给服务器.其次,不要使用knockout执行服务器端HTML.创建设置为服务器端并读取客户端的字段,以指示ViewModel中每个数据字段的有效性.

因此,如果您的模型具有字段名称,则ViewModel具有Name和Name_ValidationResult,这是一个枚举,指示Name字段是否有效以及为什么不是.如果服务器端验证失败,请设置验证结果字段并将整个服务器端ViewModel传递回客户端,以在请求完成后重新设置为客户端ViewModel.基本上,您重新创建ASP.NET的ViewState部分,但这样做的格式将与Knockout.js一起使用

在客户端,您有只显示基于ValidationResult字段值的错误消息.因此,您可能有一个罐装错误消息,指出“必须设置名称字段”,只有在Name_ValidationResult的值为“Empty”时才会显示(例如).

基本上,您实际上使用MVVM模式进行小调整以解释必须往返服务器的问题.

So you are suggesting that I add ValidationResult fields in my C# ViewModel for each property. Then set the ValidationResult Properties in my controller when I check for the Model’s validity. Then pass back the viewmodel as JSON? so that I can update my knockout viewmodel. This will require me to manually validate to some extent right? Or can I leverage the ModelState errors that I will end up with? – Blankasaurus

你的所有问题都是肯定的.

事实上,我错过了你使用DataAnnotations进行验证的事实,或者我已经提到了它.您应该能够利用ModelState错误来设置您传递回淘汰页面的验证结果.

问题是你使用了两种根本不兼容的技术,并希望它们能够很好地协同工作,而且我认为这不会像你希望的那样发挥作用.有些东西必须给予,我建议最好的一点是服务器端.喝淘汰冷却助剂,并修复你的服务器端.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读