【问题标题】:Using razor pages annotations in page model在页面模型中使用剃须刀页面注释
【发布时间】:2019-05-13 22:16:03
【问题描述】:

我一直很好地使用数据注释,但是我现在尝试直接在页面模型中指定一个。通常我会创建一个对象模型并在那里指定验证要求,但是由于这只是一个字符串,我没有看到重点。

在card.cshtml.cs中

 public class CardModel : PageModel
 {

    [BindProperty, StringLength(200, MinimumLength=5, ErrorMessage = "Please enter a note")]
    public String Note { get; set; }


     public async Task<IActionResult> OnPostNoteAsync(int? id)
    {
        //Do stuff

        return RedirectToPage(new { ID });
    }

在card.cshtml中:

            <div class="justify-content-center">
                <form asp-page-handler="note" method="post">
                    <input type="hidden" name="id" value=@Model.Card.Id />
                    <div class="form-group">
                        <label asp-for="Note" class="control-label">
                            <i class="fas fa-1x fa-comment-dots pr-2"></i>
                            New Note
                        </label>
                        <textarea asp-for="Note" class="form-control" rows="3"></textarea>
                        <span asp-validation-for="Note" class="text-danger"></span>
                    </div>
                    <div class="form-group" id="card-form" style="text-align: right">                            
                        <button type="submit" class="btn btn-ver-blue">
                            <span class="text">Add Note</span>
                        </button>

                    </div>
                </form>

            </div>

不幸的是,表单在为空时可以正常提交,而不会引发验证错误。

【问题讨论】:

  • 看来你添加了错误的注释请参考这个tutorial
  • 我已经厌倦了 [BindProperty, Required(ErrorMessage = "Please enter a note between 5 and 200 characters"), MinLength(5), MaxLength(200)] 但还是没有运气
  • 您有没有将您的cshtml 与教程中的cshtml 进行比较。你的似乎不遵循剃刀语法。
  • 哪一个?编辑 cshtml.cs 以仅显示相关部分,但底部是正确的。一切正常,但不显示验证。
  • 您是否在页面中包含了不显眼的验证库,并且您是否在命名处理程序方法中显示// do stuff 的地方测试 ModelState?处理程序是否会受到打击,因为它似乎没有遵循命名约定? (或者这是问题中的错字?)

标签: asp.net data-annotations razor-pages


【解决方案1】:

忘记添加了:

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

有时你只需要第二双眼睛:)

【讨论】:

    猜你喜欢
    • 2020-09-27
    • 1970-01-01
    • 2020-11-11
    • 2018-09-18
    • 2020-04-15
    • 1970-01-01
    • 2018-07-17
    • 2018-07-02
    • 2022-01-07
    相关资源
    最近更新 更多