部分页面上的 ASP.NET Core 3.0 Razor JQuery 验证规则

Posted

技术标签:

【中文标题】部分页面上的 ASP.NET Core 3.0 Razor JQuery 验证规则【英文标题】:ASP.NET Core 3.0 Razor JQuery validation rules on partial page 【发布时间】:2020-03-30 12:32:46 【问题描述】:

我在 ASP.NET Core 3.0 中有一个带有 RAZOR(无 MVC)的页面,部分页面加载了 AJAX;加载效果很好,但验证规则没有。在其他输入字段上使用“必需”表示法进行验证也很有效。

这是我的主页:

    <a class="nav-link showposition text-dark text-center p-0 collapsed" id="ShowPosition" href='ShowPosition'>@item.Sale_Order_Position</a>

    <div class="card shadow mb-4 collapse" aria-labelledby="ShowPosition">
        <div id="DetailContents">
        </div>
    </div>

    <script> 
    jQuery(function($) 
    $('.showposition').on('click', function (e) 
        e.preventDefault(); 
        $.ajax(
            url: $(this).attr('href'),
            type: 'GET',
            cache: false,
            headers: 
                RequestVerificationToken:  $('input:hidden[name="__RequestVerificationToken"]').val()
            
        ).done(function(result) 
            $('#DetailContents').html(result);

            //Setup Position details
            $('#SavePositionForm').SetupPositionDetails();
        );
    );

   (function( $ )
    $.fn.SetupPositionDetails = function () 

        $("#SavePositionForm").removeData("validator");
        $("#SavePositionForm").removeData("unobtrusiveValidator");
        $.validator.unobtrusive.parse("#SavePositionForm");

        $("#SavePositionForm").validate(
            debug: true,
            rules: 
                inp_NetPrice: 
                    required: true
                
            
        );

           ; 
    )(jQuery);

    );
    </script>

这是我的部分观点:

<form id="SavePositionForm" class="needs-validation" novalidate>
    <div class="col-sm-12 col-md-12 col-lg-6 col-xl-6">
        <div class="row">
            <div class="col div_image pl-0">
                <label class="bg-white"><i class="fr fa-newspaper mr-2"></i><localize>Net price</localize></label>
            </div>
            <div class="col-sm-6 col-md-6">
                <input class="form-control form-control-sm" type="number" step="any" name="inp_NetPrice" id="inp_NetPrice" asp-for="@Model.Item1.Net_Price" value="@Model.Item1.Net_Price"/>
            </div>
        </div>
    </div>
    </form>

问题是“inp_NetPrice”验证不起作用。

我也在主要部分页面中尝试过这个脚本(我知道,将脚本放在部分页面中不是一个好主意,但我想尝试)但没有成功:

$(document).ready(function () 

    $("#SavePositionForm").validate(
            debug: true,
            rules: 
                inp_NetPrice: 
                    required: true
                
            
    );

    $("#SavePositionForm").removeData("validator");
    $("#SavePositionForm").removeData("unobtrusiveValidator");
    $.validator.unobtrusive.parse("#SavePositionForm");

);

有什么建议吗? 谢谢。

编辑:

生成的 HTML:

<div class="col-sm-12 col-md-12 col-lg-6 col-xl-6">
   <div class="row">
       <div class="col div_image pl-0">
           <label class="bg-white"><i class="fa fa-newspaper mr-2"></i>Net price</label>
       </div>
       <div class="col-sm-6 col-md-6">
           <input class="form-control form-control-sm" id="inp_NetPrice" name="inp_NetPrice" value="" type="number" step="any">
       </div>
   </div>
 </div>

【问题讨论】:

你能检查生成的 HTML 输出中的输入元素吗?对 name 和 id 属性特别感兴趣 添加生成的 HTML。 【参考方案1】:

修复了删除问题

name="inp_NetPrice"

因为我有

name="inp_NetPrice" id="inp_NetPrice" asp-for="@Model.Item1.Net_Price"

【讨论】:

以上是关于部分页面上的 ASP.NET Core 3.0 Razor JQuery 验证规则的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET Core 2.2 MVC MapRoute 项目到 ASP.NET 3.0 端点 MapAreaControllerRoute “找不到此本地主机页面”

深入研究 Angular 和 ASP.NET Core 3.0

ASP.NET Core 3.0 控制器路由不起作用

.NET Core 3.0及ASP.NET Core 3.0 前瞻

自动挡换手动挡:在 ASP.NET Core 3.0 Middleware 中手动执行 Controller Action

Asp.net core razor pages 加载部分页面