gpt4 book ai didi

javascript - 我的数据应该在 ASP.NET MVC 应用程序中的何处进行验证?

转载 作者:行者123 更新时间:2023-11-28 14:27:13 24 4
gpt4 key购买 nike

我不需要意见。我想要下面这个问题的答案。我知道在我的模型类中,我可以包含数据注释来验证我的表单:

public class Movie
{
public int Id { get; set; }
public string Title { get; set; }

[Display(Name = "Release Date")]
[DataType(DataType.Date)]
[DisplayFormat(ApplyFormatInEditMode =true, DataFormatString = "{0:yyy-MM-dd}")]
public DateTime ReleaseDate { get; set; }

public string Genre { get; set; }

[DataType(DataType.Currency)]
public decimal Price { get; set; }

}

但是,已经有 JavaScript 库可以验证默认行为(即 @Html.ValidationMessageFor() ):

<div class="form-group">
@Html.LabelFor(model => model.Title, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.Title, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.Title, "", new { @class = "text-danger" })

我的问题是...最好的做法是仅在模型中验证还是在 View 本身中验证?在维护安全方面什么更安全?

如果这是一个错误的问题,请告诉我,我会尽快将其删除。

谢谢

最佳答案

Html.ValidationMessageFor 将根据模型中的属性生成所需的 HTML。因此,如果您的模型具有如下属性:

public string Name { get; set; }

那么什么也不会生成。但是,如果你有这个:

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

然后生成的 HTML 将包含此字段的必填信息。因此,您将获得 JavaScript 支持,以确保用户在提交表单之前填写该字段。换句话说,仅仅因为您拥有 Html.ValidationMessageFor 并不意味着您获得了验证。您仍然需要模型上的数据注释来帮助 View 引擎生成 HTML 属性,例如 required="required" 等。

使用 JavaScript 在客户端进行验证是为了方便和更好的用户体验。但是,即使您已经在客户端上验证了数据,您也应该始终在服务器上进行验证。不要相信客户。另外,在某些情况下,JavaScript 可能会被禁用,因此您的 JavaScript 验证可能永远不会被触发,因此,这是您应该始终在服务器端执行验证的另一个原因。

关于javascript - 我的数据应该在 ASP.NET MVC 应用程序中的何处进行验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52784544/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com