不允许在int属性中使用负值MVC C#

时间:2017-05-15 18:58:43

标签: c#

我在MVC C#中有一个强类型视图,用户必须在其中输入一个int值,该属性为

 [Required(ErrorMessage="especificar correlativo")]
    [Display(Name = "Correlativo")]
    [Range(1, 9999, ErrorMessage = "correlativo no valido")]
    [RegularExpression(@"^(((\d{1})*))$", ErrorMessage = "correlativo no valido")]
    public int correlativo1
    {
        get { return Correlativo1; }
        set { Correlativo1 = value; }
    }

但我的问题是当vies显示时,输入让用户通过输入右侧的箭头指定负值

enter image description here

是的,它显示了验证消息

enter image description here

但我不想(因为非常开始)让用户可以选择指定负值。

这是视图中的输入

<div class="form-group">
                    <div class="col-md-2">
                        @Html.LabelFor(model => model.correlativo1, htmlAttributes: new { @class = "control-label" })
                        @Html.EditorFor(model => model.correlativo1, new { htmlAttributes = new { @class = "form-control left-border-none", @id = "idCorrelativo", @title = "especifique correlativo de licitación", @Value = ViewBag.correlativo } })
                        @Html.ValidationMessageFor(model => model.correlativo1, "", new { @class = "text-danger" })
                    </div>
你可以告诉我如何解决它吗?

3 个答案:

答案 0 :(得分:3)

实际上,看看在编辑器中添加min属性是否有效。基本上想要在最终的HTML中呈现:min="0"。所以在你的代码中:

<div class="form-group">
    <div class="col-md-2">
         @Html.LabelFor(model => model.correlativo1, htmlAttributes: new { @class = "control-label" })
         @Html.EditorFor(model => model.correlativo1, new { htmlAttributes = new { @class = "form-control left-border-none", @id = "idCorrelativo", @title = "especifique correlativo de licitación", @Value = ViewBag.correlativo, @min="0" } })
         @Html.ValidationMessageFor(model => model.correlativo1, "", new { @class = "text-danger" })
    </div>
</div>

您也可以使用它来添加max属性(如果需要)

答案 1 :(得分:1)

 @Html.EditorFor(model => model.correlativo1, new { htmlAttributes = new { @min = 0, @max = 9999, @class = "form-control left-border-none", @id = "idCorrelativo", @title = "especifique correlativo de licitación", @Value = ViewBag.correlativo } })

答案 2 :(得分:0)

我对MVC不太熟悉,但你可以考虑以下其中一种。

如果负值无效,那么您可能想要考虑使用unsigned int而不是int。

或.. 更改属性的set以防止值低于0.

public int correlativo1
{
    get { return Correlativo1; }
    set
    { 
        if (value >= 0)
            Correlativo1 = value;
        else
            Correlativo1 = 0;
    }
}