JQuery 不显眼

JQuery Unobtrusive

提问人:Mahdi Khorshidi 提问时间:12/17/2022 最后编辑:Keivan SoleimaniMahdi Khorshidi 更新时间:12/29/2022 访问量:54

问:

我在我的引导模式中使用 jquery 不显眼来验证表单。 所以我有用户选择图片的文件字段,但这不是必需的,但当用户提交表单时仍然需要 这是我的模型:

 public class CreateSlide
    {
    
        [MaxFileUploadSize(1*1024*1024,ErrorMessage = ValidationMessages.uploadSize)]
        public IFormFile Picture { get;  set; }
        [Required(ErrorMessage = ValidationMessages.requiredField)]
        public string HeadingText { get;  set; }
        [Required(ErrorMessage = ValidationMessages.requiredField)]
        public string TitleText { get;  set; }
        [Required(ErrorMessage = ValidationMessages.requiredField)]
        public string Text { get;  set; }
        [Required(ErrorMessage = ValidationMessages.requiredField)]
        public string BtnText { get;  set; }
    }

我在模型中删除了所需的数据注释,我尝试在表单中使用jquery删除它,但它不起作用

jquery asp.net-core net-6.0 不显眼验证

评论

0赞 Lajos Arpad 12/18/2022
请解释它是如何不起作用的。
0赞 Mahdi Khorshidi 12/29/2022
例如,图片属性在从表单接收的模型中可以为 null,但当用户提交信息时,当图片字段为 null jquery 不显眼时,不允许提交信息

答:

0赞 Qing Guo 12/19/2022 #1

所以我有文件字段,用户可以选择一张图片,但这不是必需的 但是当用户提交表单时仍然需要

您有两种选择可以尝试。希望能帮到你。

选项 1 ,从 project.csproj 文件中删除以下代码。阅读本文以了解更多信息。

 <Nullable>enable</Nullable>

选项 2 ,添加如下内容:?

public IFormFile ? Picture { get;  set; }

更新

结构:enter image description here

索引模型

public class IndexModel : PageModel
    {
        private readonly ILogger<IndexModel> _logger;

        public IndexModel(ILogger<IndexModel> logger)
        {
            _logger = logger;
        }
        [BindProperty]
        public CreateSlide CreateSlide { get; set; } 
        public void OnGet()
        {

        }
        public void OnPost(CreateSlide createSlide)
        {

        }
    }

索引视图:

    @page
@model IndexModel
@{
    ViewData["Title"] = "Home page";
}
@{
    ViewData["Title"] = "Create";
}

<h1>Create</h1>

<h4>CreateSlide</h4>
<hr />
<button id="btnShowModal" type="button"> Upload </button>
<div class="modal fade" id="Modal">
    <div class="modal-dialog modal-lg">
        <div class="modal-content">
            <div class="modal-header">
                <button id="btnHideModal" type="button" class="btn btn-secondary" data-dismiss="modal">  ×</button>
            </div>
            <div class="modal-body">
                <div class="row">
                    <div class="col-md-4">
                        <form method="post" enctype="multipart/form-data">
                            <div asp-validation-summary="ModelOnly" class="text-danger"></div>
                            <div class="form-group">
                                <label asp-for="CreateSlide.Picture" class="control-label"></label>
                                <input asp-for="CreateSlide.Picture" type="file" class="form-control" />
                                <span asp-validation-for="CreateSlide.Picture" class="text-danger"></span>
                            </div>
                            <div class="form-group">
                                <label asp-for="CreateSlide.HeadingText" class="control-label"></label>
                                <input asp-for="CreateSlide.HeadingText" class="form-control" />
                                <span asp-validation-for="CreateSlide.HeadingText" class="text-danger"></span>
                            </div>
                            <div class="form-group">
                                <label asp-for="CreateSlide.TitleText" class="control-label"></label>
                                <input asp-for="CreateSlide.TitleText" class="form-control" />
                                <span asp-validation-for="CreateSlide.TitleText" class="text-danger"></span>
                            </div>
                            <div class="form-group">
                                <label asp-for="CreateSlide.Text" class="control-label"></label>
                                <input asp-for="CreateSlide.Text" class="form-control" />
                                <span asp-validation-for="CreateSlide.Text" class="text-danger"></span>
                            </div>
                            <div class="form-group">
                                <label asp-for="CreateSlide.BtnText" class="control-label"></label>
                                <input asp-for="CreateSlide.BtnText" class="form-control" />
                                <span asp-validation-for="CreateSlide.BtnText" class="text-danger"></span>
                            </div>
                            <div class="form-group">
                                <input type="submit" value="Create" class="btn btn-primary" />
                            </div>
                        </form>
                    </div>
                </div>

            </div>
        </div>
    </div>
</div>

@section Scripts {
    @{
        await Html.RenderPartialAsync("_ValidationScriptsPartial");
    }
<script type="text/javascript">
        $(document).ready(function () {
                $("#btnShowModal").click(function () {                                 
                $("#Modal").modal('show');
            });
 $("#btnHideModal").click(function () {
                $("#Modal").modal('hide');
            });
        });
    </script>
}

创建幻灯片:

public class CreateSlide
    {
        public IFormFile Picture { get; set; }
        [Required]
        
        public string HeadingText { get; set; }
        [Required]
        public string TitleText { get; set; }
        [Required]
        public string Text { get; set; }
        [Required]
        public string BtnText { get; set; }
    }

评论

0赞 Qing Guo 12/20/2022
嗨,@Mahdi Khorshidi,有什么更新吗?如果我的回答能帮助您解决问题,您能接受答案吗?如果没有,你能跟进让我知道吗?请参阅:如何获取答案谢谢。
0赞 Mahdi Khorshidi 12/29/2022
当我使属性可为空(添加?)时,它不起作用,我的所有模型属性都变得可空并且删除 csProj 中的 (<nullable> enable</nullable>) 不起作用
0赞 Qing Guo 12/29/2022
@Mahdi Khorshidi 怎么不醒来?你能解释一下吗?
0赞 Mahdi Khorshidi 12/29/2022
看看你说的第一个解决方案,添加?属性使其可为空,所以我做了一个 proplem 是这个 '?' 影响这个模型中的其他属性,并使所有属性都可以为 null 并且对于您所说的第二个解决方案的相同问题
1赞 Mahdi Khorshidi 12/29/2022
我认为最好在这里聊天并最终评论结果?