我正在尝试在Asp.net-core 2.2中使用远程属性验证,但是我没有在验证控制器中使用action方法。
提供了这些脚本
<script src="~/site/js/jquery.js"></script>
<script src="~/site/js/jquery.validate.js"></script>
<script src="~/site/js/jquery.validate.unobtrusive.js"></script>
验证控制器
[Authorize]
public class ValidationController : Controller
{
[AcceptVerbs("Get", "Post")]
public IActionResult ValidateDupliciteName(string name)
{
var test = false;
return Json(test);
}
}
ViewModel
[Remote("ValidateDupliciteName", "Validation")]
public string name { get; set; }
和模型绑定的视图,我正在使用淘汰赛。
<input type="text" class="input-validation-error form-control" data-bind="value: @(nameof(Model.name))" />
我没有收到任何错误消息,当我在action方法内设置断点时,它不会被命中。 问题可能是当我在chrome中打开开发人员工具时,看不到验证控制器操作方法的任何url请求...
答案 0 :(得分:0)
请确保您的视图中有表单元素。 Name属性必须在form元素内。 您还必须考虑以下部分;
@section Scripts {
@{await Html.RenderPartialAsync("_ValidationScriptsPartial"); }
}
答案 1 :(得分:0)
对于“远程验证”属性,它与下面的代码一起使用
<input asp-for="Name" class="form-control" />
它将在呈现视图期间生成类似的html。
<input class="form-control" type="text" data-val="true" data-val-remote="'Name' is invalid."
data-val-remote-additionalfields="*.Name" data-val-remote-url="/Validation/ValidateDupliciteName"
id="Name" name="Name" value="">
对于您的代码,它不包含此代码,并且knockout
将不会生成与远程相关的html代码。
如果您更喜欢淘汰赛,则需要使用ajax来实现自己的请求,并且可以参考Validation / Remote Validation with knockout.js in vb.net mvc