gpt4 book ai didi

c# - MVC5 客户端验证未启动

转载 作者:行者123 更新时间:2023-11-30 20:33:02 26 4
gpt4 key购买 nike

因此,我在 Stack Overflow 上解决了很多问题,并验证了我能想到的几乎所有内容,但我无法让客户端验证正常工作。我不知道我做错了什么。

为了缩短问题,删除了原始代码,因为下面提供了一个更简化的示例。

编辑:

我正在编辑此问题以尝试消除混淆并找到问题的根源。因此,为了让这一切变得非常简单,我在我的项目中所做的就是:

第 1 步:创建一个新的 TestController

public class TestController : Controller
{
[HttpGet, AllowAnonymous]
public ActionResult Index()
{
return View(new TestViewModel());
}

[HttpPost, AllowAnonymous, ValidateAntiForgeryToken]
public ActionResult Index(TestRequestModel requestModel)
{
if (!@ModelState.IsValid)
{
return new TestViewModel
{
Email = requestModel.Email
};
}
return View();
}
}

第 2 步:创建一个新的 TestView

@model MyProject.Models.TestViewModel
@{
ViewBag.Title = "User Console Home";
}

@using (Html.BeginForm("Index", "Test", FormMethod.Post, new {@class = "form-horizontal", role = "form"}))
{
@Html.ValidationMessageFor(m => m.Email)
@Html.LabelFor(m => m.Email)
@Html.TextBoxFor(m => m.Email)
}

第 3 步:创建一个新的 TestRequestModel

public class TestRequestModel
{
[Required]
[EmailAddress]
[Display(Name = "Email")]
public string Email { get; set; }
}

第 4 步:创建一个新的 TestViewModel

public class TestViewModel
{
public string Email { get; set; }
}

第 5 步:确保 Web.Config 包含正确的 key

<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />

第 6 步:确保我的 _Layout.cshtml 包含正确的 javascript 文件

<!DOCTYPE html>
<html>
<head>
<script src="/JQuery/jquery-2.2.3.js"></script>
<script src="/JQuery/jquery-ui-1.11.4.js"></script>
<script src="/JQuery/jquery.validate.js"></script>
<script src="/JQuery/jquery.validate.unobtrusive.js"></script>
</head>
<body>
@RenderBody()
</body>
</html>
  1. 将我的项目与一个经过客户端验证的全新项目进行比较,代码几乎完全相同

我错过了什么?开箱即用,我不需要编写适配器来获取 Required 或 EmailAddress 属性。我觉得我缺少一个设置或一段代码,我就是想不通是什么。

最佳答案

您用于View 的模型是TestViewModel

@model MyProject.Models.TestViewModel

但是您没有使用验证属性修饰 TestViewModelEmail 属性,因此请将您的 View 模型更改为:

public class TestViewModel
{
[Required]
[EmailAddress]
[Display(Name = "Email")]
public string Email { get; set; }
}

注意:客户端验证将用于您使用 TestViewModel 创建的渲染 View 。因此,要启用客户端验证,您需要使用验证属性来装饰其属性。这些验证与您用作 POST 操作输入的 TestRequestModel 没有任何关系。您在 TestRequestModel 上设置的属性将在模型绑定(bind)时将数据发布到服务器后被命中。

关于c# - MVC5 客户端验证未启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40711746/

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