当其他输入验证验证失败时,Razor Pages textarea 输入只会增长和增长

Posted

技术标签:

【中文标题】当其他输入验证验证失败时,Razor Pages textarea 输入只会增长和增长【英文标题】:Razor Pages textarea input just grows and grows when other input validations fail validation 【发布时间】:2022-01-12 23:24:52 【问题描述】:

我正在使用 asp.net core 和 razor 页面。我有一个简单的表单页面,其中包含几个文本框,然后是 1 个文本区域。如果链接到 textarea 的模型对象变量通过了验证,但说其他文本框中的 1 个验证失败,那么在页面返回后,我的 textarea 中的值会根据先前的值增长。因此,例如,如果 textarea 包含“abc,xyz”,那么在页面从页面上另一个常规文本框的验证失败返回后会发生什么,那么 textarea 会增长到“abc,xyzabc,xyz”

我只有一个简单的文本区域

<textarea class="form-control" asp-for="MyObject.EmailsList" rows="3" placeholder="Multiple addresses need to be seperated by a semi-colon ;"></textarea>

我调试并验证了 MyObject.EmailsList 仅包含“abc,xyz”,因为其他一些文本框验证失败,每次页面返回时。所以我在摸不着头脑,为什么这个 textarea 没有自行清除并正确加载值??

【问题讨论】:

【参考方案1】:

当你有一个输入框验证错误,你想在你的textarea上加倍给定的值,你可以参考这个demo:

型号:

[Required]
        [BindProperty]
        public string name  get; set;  
        [BindProperty]
        public myObject MyObject  get; set;  = new myObject  EmailsList="xyz";
        public  class myObject
        
            public  string  EmailsList  get; set; 
        

查看:

<form id="myform" method="post">
    <div class="form-group">
        <label asp-for="name" class="control-label"></label>
        <input asp-for="name" class="form-control" />
        <span asp-validation-for="name" class="text-danger"></span>
    </div>

    <textarea class="form-control" asp-for="MyObject.EmailsList" rows="3" placeholder="Multiple addresses need to be seperated by a semi-colon ;"></textarea>
</form>
<button onclick="Test()">click me!</button>


@section Scripts
    <script src="~/lib/jquery-validation/dist/jquery.validate.min.js"></script>
    <script src="~/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.min.js"></script>

    <script>
        function Test() 
            $("#myform").validate();
            if ($("#myform").valid()) 
                $.ajax(
                    type: "POST",
                    url: '',
                    headers:  "RequestVerificationToken": $('input[name="__RequestVerificationToken"]').val() ,
                    data: $("#myform").serialize(),
                    success: function (data) 

                    ,
                )
             else
                $("#MyObject_EmailsList").val($("#MyObject_EmailsList").val() + $("#MyObject_EmailsList").val());
            
        
    </script>

请求:

【讨论】:

以上是关于当其他输入验证验证失败时,Razor Pages textarea 输入只会增长和增长的主要内容,如果未能解决你的问题,请参考以下文章

如何将 Azure Active Directory 身份验证添加到 Razor Pages 应用程序?

ASP .NET Core 5 Razor Pages:如何正确使用局部视图并验证其模型状态?

当输入验证失败时,Angularjs会阻止表单提交

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

Razor 页面流畅的验证服务器端不起作用

Gitlab Pages:无法验证域所有权