gpt4 book ai didi

javascript - 验证会触发,但失败时不会显示消息。我缺少什么? MVC 5 Razor

转载 作者:行者123 更新时间:2023-12-03 07:12:46 25 4
gpt4 key购买 nike

我似乎无法在 View 的输入模型字段下显示验证错误消息。

描述输入上方的 [Required] 标记使 ModelState 无效,但不会停止提交。我必须通过检查模型状态来捕获它。我是否缺少一些 .js 文件?我没有任何例子来仔细检查这一点。

这是我的模型(请注意,目前我只有一个[必需]):

public partial class Requests
{
public int RequestID { get; set; }
public string NickName { get; set; }
public Nullable<double> Lat { get; set; }
public Nullable<double> Lng { get; set; }
public string ZipCode { get; set; }
[Required(ErrorMessage = "Description of what you need is missing.")]
public string Description { get; set; }
public System.DateTime DateCreated { get; set; }
}

这是我的 View ,其中“描述”输入需要输入。

<div class="form-group">
@Html.LabelFor(model => model.Description, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.TextAreaFor(model => model.Description, new { htmlAttributes = new { @class = "form-control", @rows = "20", @cols = "200" } })
@Html.ValidationMessageFor(model => model.Description, "", new { @class = "text-danger" })
</div>
</div>

这是我的 Controller ActionResult(精简)

if (ModelState.IsValid)
{
//THIS ALL WORKS IF Description HAS INPUT

}
else
{
TempData["Saved"] = "Nothing saved yet. Look for reason.";
return RedirectToAction("StoreRequests", new { lat = requests.Lat, lng = requests.Lng });
}

ModelState 失败时,用户将被定向到正确的 View ,并且 TempData 显示未保存任何内容。但是,有问题的输入下方的 View 上没有错误消息, View 顶部没有 ValidationSummary,并且输入错误时不会停止提交。

@if(TempData["Saved"] != null)
{
<span style="color: red;">@TempData["Saved"].ToString()</span>
}
<hr />
@Html.ValidationSummary(true, "", new { @class = "text-danger" })

最佳答案

为了获得客户端验证(从而防止表单无效时提交表单),您需要在 View (或布局)中包含以下脚本。

jquery-{version}.js
jquery.validate.js
jquer.validate.unobtrusive.js

如果你在创建新项目时有 VS 设置的默认包,则只需将以下内容添加到 View 中即可

@Scripts.Render("~/bundles/jquery")
@Scripts.Render("~/bundles/jqueryval")

此外,如果 ModelState 无效,您不应重定向,而应返回当前 View ,即使用户禁用了 javascript,该 View 也会显示任何验证错误。通过重定向,您将丢失当前的 ModelState,因此重定向到的 View 中不会显示验证错误,更不用说用户之前填写的任何数据(您传递的 2 个参数除外)都将丢失。

public ActionResult Edit (Requests model)
{
if (!ModelState.IsValid)
{
return View(model);
}
// save you data and redirect
}

关于javascript - 验证会触发,但失败时不会显示消息。我缺少什么? MVC 5 Razor ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36562189/

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