我正在使用 ASP.NET 构建一个公共网站,作为可交付成果的一部分,我需要创建一个管理站点来输入公共站点中显示的内容的数据,我想知道人们使用什么技术或程序来使用 ASP 验证条目.NET MVC。

有帮助吗?

解决方案

看看 JQuery 验证插件 这个插件太棒了,它实现起来很干净,并且具有您可能需要的所有功能,包括通过 AJAX 进行远程验证。

还可以找到示例 MVC 控制器方法 这里 它基本上使用 JsonResult 操作类型,例如:

public JsonResult CheckUserName(string username)
{
    return Json(CheckValidUsername(username));
}

其他提示

@Chuck - 您还不能在 ASP.NET MVC 中使用 AjaxToolKit 控件。它们仅在 ASP.NET 页面回发模型中工作。

更新:

自 2008 年 8 月 20 日起,您可以在 ASP.NET MVC 框架内使用 Ajax Control Toolkit 的仅脚本文件。这是一个链接 发布.

还, 这是一个教程 Stephen Walther 使用它们创建弹出日历。

我只是想确保每个人在阅读此帖子时都能获得正确的信息。

IMO 将 xVal 与 jQuery 和 DataAnnotationsModelBinder 结合使用是最佳组合。

但有时,有些验证规则无法完全在客户端进行检查,因此您需要使用远程客户端验证。

我找到了使用 xVal / jQuery.validate 一般实现远程客户端验证的方法,以便

  • 验证规则仅保留在 ASP.NET MVC 模型中
  • 每个验证规则只需编写一次,并且只能使用易于测试的 C# 代码。没有 JavaScript 或其他客户端对应项。
  • 无需分支或以其他方式修改 xVal 或 jquery.validate
  • 对于每个新的远程表单验证规则,您所要做的就是从本文中显示的基类派生。

我写了一个 博客文章 在此描述所有细节。

我喜欢用 实时验证 我的 ASP.NET MVC 应用程序中的库。有了它,我能够设置一种在客户端和服务器上进行验证的方法。这样,用户在提交表单之前就知道出了问题,然后使用服务器端功能来处理其他异常情况。

我从这篇文章开始,它在如何设置类似的设置方面做得非常好:

ASP.NET MVC 基于模型的客户端验证

我的方式:

我遵循预览版 4 版本附带的帐户控制器中显示的示例,其中在控制器中检查字段,如果遇到错误,则会聚合字符串错误数组,以便稍后在启动该视图的同一视图中显示。要求。

我也一直在关注的想法 斯蒂芬·沃尔特谈 MVC 我认为 这个帖子 最好用提交的数据重新填充字段,以便在再次提交之前进行更改。

你们都用什么?

您看过 AjaxToolKit 提供的控件吗?我使用了 MaskedEditExtender 和 ValidatorCalloutExtender,并对结果非常满意。

@Dale - 感谢您纠正我的错误!不知道这一点(上周刚刚开始使用该工具包)。请忽略我的建议:)

@扎克: :是的,我也读过那篇文章,并且基于那篇文章,所以使用 jQuery 作为他们的 javascript 库。我不能代表 SO 团队发言,但我有根据的猜测是,他们很可能使用 jquery 内部的 ajax 功能来处理他们的 ajax 请求。如果你使用像这样的 javascript 库,那么手动编码实际上并没有那么糟糕 jQuery, 原型, , 和 穆工具. 。然后,您将新的 JsonResult ActionResult 返回值用于您的操作,并对它们发出 ajax 请求。这些库为您封装了 XmlHttpRequest 对象,使 ajax 调用变得容易并且浏览器安全。

您可以使用 .net 验证框架 如果您想要客户端/服务器端验证,请在 codeplex 上。它根据模型中定义的规则生成 jQuery 验证插件的代码。此外,如果您使用框架的“高级”功能,您可以手动控制 jQuery 验证插件的设置。结帐 MVC 快速入门.

混合使用客户端验证和服务器端验证。

对于客户端验证,中描述的方法 丹尼尔·波拉德的回答 看起来不错。客户端验证不是强制性的,但将为用户提供更好、响应更快的体验。

另一方面,服务器端验证应该是强制性的:永远不要相信客户的输入。我肯定会研究预览版 5 中 ASP.NET MVC 框架提供的功能(如 马特·辛兹的回答),

我最喜欢的方式是使用基于模型的属性执行客户端和服务器验证。我写了一篇关于此的简短文章并发布了源代码,这基本上允许您创建这样的类



class User {

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

    [Email][Required]
    public string Email {get;set;}
}

并且将生成适当的 JavaScript 代码来执行客户端验证,并且服务器端验证运行程序将验证您提交的表单。

把帖子读一遍 这里

@查克 - 不用担心。这就是 SO 的用途。你学到了一些东西,提出问题的人也学到了一些东西。

Stack Overflow 上如何处理 AJAX?JQuery 能做到吗?

  • 右键点击页面
  • 在弹出菜单中查找“查看页面源代码”
  • 点击它

:-)

如果您想坚持使用开箱即用的功能但需要扩展它,请查看 我的回答在这里 关于 IDataError 的问题。

基本上我使用数据注释和模型绑定器来实现更复杂的逻辑。我发现这是一种非常干净的方式,让我能够保持在 MS 提供的范围内。

我解释如何使用 modelbinder 添加模型的“类级别”检查,而无需使用 IDataError - 正如您在这里所看到的,这可能非常笨拙。它仍然允许您使用 [Required] 属性或您拥有的任何其他自定义验证属性,但允许您添加或删除单个模型错误。有关如何使用数据注释的更多信息,我强烈推荐 这篇文章来自斯科特·顾.

在 ASP.NET MVC 中实现验证的方法之一是使用数据注释和客户端验证。这 文章 展示了我们如何为实体框架生成的模型类做到这一点。

戴尔·拉根 写道:

无法在 ASP.NET MVC 中使用 AjaxToolKit 控件

Stack Overflow 上如何处理 AJAX?JQuery 能做到吗?在他的《编码恐怖》帖子中 JavaScript 忍者的秘密 Jeff 在撰写 Stack Overflow 时写了有关使用 JQuery 的文章。

他们肯定不是手工编码的。当术语“AJAX”在 2005 年左右流行时,我对所有 XMLHttpRequest JavaScript 都这样做过一次。这是一场噩梦。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top