显示输入类型编号但模型属性字符串的剃刀视图的验证消息

Posted

技术标签:

【中文标题】显示输入类型编号但模型属性字符串的剃刀视图的验证消息【英文标题】:Show validation message for razor view for input type number but model attribute string 【发布时间】:2021-10-28 12:21:39 【问题描述】:

我的模态类中有一个字符串字段,用户只需要输入 1-8 之间的数字。 模态类属性:

[MaxLength(1)]
[MinLength(1)]
[Required(ErrorMessage = "Please enter correct value")]
public string RoomNumber  get; set; 

此输入在视图页面中被询问为:

<div class="form-group">
@html.LabelFor(model => model.RoomNumber, htmlAttributes: new  @class = "col-md-12" )
<div class="col-md-12">
    @Html.EditorFor(model => model.RoomNumber, new  htmlAttributes = new  @class = "form-control input-digit", @type = "number", @min = "1", @max = "8"  )
    @Html.ValidationMessageFor(model => model.RoomNumber, "", new  @class = "text-danger" )
</div>
</div>

    如果用户输入的值不正确,我想为用户打印验证消息,我的意思是如果他们输入的值大于 8,则显示错误消息。

    我还可以将用户输入限制在 1 到 8 位数字之间吗?有可能吗?

由于项目限制,我无法更改RoomNumber属性的数据类型。

谢谢。

【问题讨论】:

【参考方案1】:

在下面的示例中,RegularExpression 属性用于验证 RoomNumber 属性:

public class RoomInfo

    [RegularExpression(@"^[1-8]1$", ErrorMessage = "Enter valid number from 1 to 8"), Required]        
    public string RoomNumber  get; set; 

观点:

@model RoomInfo

@using (Html.BeginForm("Save", "Home"))

    @Html.ValidationSummary();

    <div class="form-group">
            @Html.LabelFor(m => m.RoomNumber)
            <p>@Html.TextBoxFor(m => m.RoomNumber, htmlAttributes: new  type="number", placeholder = "Room number" )</p>
            @Html.ValidationMessageFor(m => m.RoomNumber)
     </div>
    <button type="submit" class="btn btn-primary">Save</button>

【讨论】:

请检查这个问题***.com/questions/69028153/…

以上是关于显示输入类型编号但模型属性字符串的剃刀视图的验证消息的主要内容,如果未能解决你的问题,请参考以下文章

asp.net mvc,剃刀部分视图-布尔属性未显示

具有匿名类型模型类的剃刀视图。有可能的?

使用剃刀的条件 Html 属性

剃刀视图 MVC 中的多个模型

在剃刀中获取当前用户名

立即验证客户端的电子邮件字段