繁体   English   中英

如何在ASP.NET MVC中验证文本框

[英]How to validate textboxes in ASP.NET MVC

我是ASP.NET MVC的新手,正在尝试验证文本框。 基本上,如果用户输入的数字少于2或为非数字,那么如何显示错误。 这是我要遵循的教程

我下面有我的代码。

创建视图:

<%= Html.ValidationSummary()%>
<%= using (HtmlBeginForm()){%>
<div class="half-col">
    <label for="Amount">Amount:</label>
    <%= Html.TextBox("Amount")%>
    <%= Html.ValidationMessage("Amount", "*")%>
</div>

创建控制器:

[AcceptVerbs (HttpVerbs.Post)]
public ActionResult Create([Bind(Exclude ="ID")] Charity productToCreate)
{
    //Validation
    if (productToCreate.Amount < 2)
        ModelState.AddModelError("Amount, Greater than 2 please");

    return View(db.Donations.OrderByDescending(x => x.ID).Take(5).ToList());  //Display 5 recent records from table 
}

模型:

public class Charity
{
    public int ID { get; set; }
    public string DisplayName { get; set; }
    public DateTime Date { get; set; }
    public Double Amount { get; set; }
    public Double TaxBonus { get; set; }
    public String Comment { get; set; }
}

错误:

CS1501方法'AddModelError'的重载不占用1个CharitySite

您将错误错误地添加到模型状态。 您可以在MSDN上阅读有关ModelStateDictionary的更多信息。

AddModelError需要2个参数,因此您需要:

ModelState.AddModelError("Amount", "Greater Than 2 Please.");

话虽如此,您可以使用属性来验证模型属性,因此您不必手动编写所有代码。 下面是使用Range属性的示例。 RegularExpression属性也可以使用。 这是MSDN文章,其中包含有关不同类型的属性的信息。

public class Charity
{
    public int ID { get; set; }
    public string DisplayName { get; set; }
    public DateTime Date { get; set; }

    [Range(2, Int32.MaxValue, ErrorMessage = "The value must be greater than 2")]
    public Double Amount { get; set; }
    public Double TaxBonus { get; set; }
    public String Comment { get; set; }
}

另外,您要遵循的教程是针对MVC 1&2的。 除非您必须使用/学习。 我会推荐教程MVC 5以下这里

更改此行:

ModelState.AddModelError("Amount, Greater than 2 please");

至:

ModelState.AddModelError("Amount ", "Amount, Greater than 2 please");

第一个参数是正在验证的模型的成员; 它可以是一个空字符串,仅表示与字段无关的错误。 通过指定Amount字段,如果您使用所有客户端验证块,则在内部使用Amount字段突出显示错误字段(控件应在其中添加了input-validation-error CSS类)。

ModelState.AddModelError接受2个参数,而不是1个。链接到MSDN ModelStateDictionary.AddModelError Method

ModelState.AddModelError("Amount", "Greater than 2 please");
if (productToCreate.Amount < 2)
    ModelState.AddModelError("Amount", "Greater than 2 please");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM