gpt4 book ai didi

jquery - MVC 5 - 添加客户端验证以拒绝默认值?

转载 作者:行者123 更新时间:2023-12-01 00:56:28 26 4
gpt4 key购买 nike

我正在使用 DropDownListFor 并提供默认选择 -- Select Make --,其中具有空值。我想向用户提供要做什么的提示(因此“选择制作”),但不想允许他们实际提交该值。目前该网站允许这样做。

我认为添加最小长度 2 可以防止这种情况发生,但没有成功。

我对 .NET MVC 还很陌生,所以如果我的做法完全错误,请告诉我。

实际的POST请求正文是:

Make=&OtherArgument=1&NextArgument=test

查看代码:

@Html.LabelFor(m => m.Make)
@Html.DropDownListFor(m => m.Make, Model.Make, "-- Select Make --")
@Html.ValidationMessageFor(m => m.Make)

型号代码:

    [Required(ErrorMessage = "*", AllowEmptyStrings = false)]
[StringLength(50, MinimumLength = 2, ErrorMessage = "*")]
public IEnumerable<SelectListItem> Make = new List<SelectListItem>
{
new SelectListItem
{
Text = "Deere",
Value = "Deere"
},
new SelectListItem
{
Text = "Case",
Value = "Case"
},
new SelectListItem
{
Text = "CAT",
Value = "CAT"
}
};

最佳答案

这里的第一个问题是选择的模型和用户可以选择的模型之间的区别。将 ModelSelect 属性添加到模型中可以解决此问题(以及一些 View 更改)。

第二个问题是通过添加脚本引用来启用 jquery 不显眼的验证。

这些是您需要采取的步骤,以便通过 JavaScript 验证防止表单提交(假设 MVC4+)。

型号

    public class AModel
{
[Required(ErrorMessage = "*", AllowEmptyStrings = false)]
[StringLength(50, MinimumLength = 2, ErrorMessage = "*")]
public string SelectedMake { get; set; }
public IEnumerable<SelectListItem> Make = new List<SelectListItem>
{
new SelectListItem
{
Text = "Deere",
Value = "Deere"
},
new SelectListItem
{
Text = "Case",
Value = "Case"
},
new SelectListItem
{
Text = "CAT",
Value = "CAT"
}
};
}

注意 SelectedMake 属性

查看

@using(Html.BeginForm()){
@Html.LabelFor(m => m.Make)
@Html.DropDownListFor(m => m.SelectedMake, Model.Make, "-- Select Make --")
@Html.ValidationMessageFor(m => m.SelectedMake)
<input type="submit" value="submit" />
}

注意下拉列表的第一个参数中的 SelectedMake 和 ValidationMessageFor

脚本引用

<script src="~/Scripts/jquery-1.8.2.min.js"></script>
<script src="~/Scripts/jquery.validate.min.js"></script>
<script src="~/Scripts/jquery.validate.unobtrusive.min.js"></script>

需要启用 jquery 验证

屏幕抓取

enter image description here

请注意红色星号,jquery unobtrusive 现在会阻止表单提交。

关于jquery - MVC 5 - 添加客户端验证以拒绝默认值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24674796/

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