【问题标题】:Remote attribute doesn't hit the action controller method远程属性没有命中动作控制器方法
【发布时间】:2019-11-13 11:05:25
【问题描述】:

我正在尝试在 Asp.net-core 2.2 中使用远程属性验证,但我没有点击验证控制器中的操作方法。

提供了这些脚本

    <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);
        }
    }

视图模型

    [Remote("ValidateDupliciteName", "Validation")]
    public string name { get; set; }

我正在使用淘汰赛的模型绑定视图。

<input type="text" class="input-validation-error form-control" data-bind="value: @(nameof(Model.name))" />

我没有收到任何错误消息,当我在操作方法中设置断点时它不会被命中。 问题可能是当我在 chrome 中打开开发人员工具时,我没有看到对验证控制器操作方法的任何 url 请求......

【问题讨论】:

    标签: c# asp.net-core


    【解决方案1】:

    确保您的视图中有表单元素。名称属性必须在表单元素内。 您还必须将以下部分放在您的视图中;

     @section Scripts {        
            @{await Html.RenderPartialAsync("_ValidationScriptsPartial"); }
        }
    

    【讨论】:

      【解决方案2】:

      对于远程验证属性,它使用下面的代码

      <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 代码。

      如果你更喜欢knockout,你需要用ajax实现自己的请求,可以参考Validation / Remote Validation with knockout.js in vb.net mvc

      【讨论】:

      • 谢谢你这正是问题所在!
      猜你喜欢
      • 2020-01-12
      • 2018-09-13
      • 1970-01-01
      • 1970-01-01
      • 2017-07-03
      • 1970-01-01
      • 1970-01-01
      • 2022-01-26
      • 1970-01-01
      相关资源
      最近更新 更多