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

本文关键字:验证 文本 NET ASP MVC | 更新日期: 2023-09-27 18:37:08

我是 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 方法"添加模型错误"没有重载需要 1 个慈善机构网站

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

您错误地将错误添加到模型状态。 您可以在 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 字段,如果您使用的是所有客户端验证部分,它会在内部使用该字段突出显示错误字段(控件应向其添加输入验证错误 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");