Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在ASP.NET MVC中验证文本框_C#_Asp.net Mvc_Validation - Fatal编程技术网

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

C# 如何在ASP.NET MVC中验证文本框,c#,asp.net-mvc,validation,C#,Asp.net Mvc,Validation,我是ASP.NET MVC新手,正在尝试验证文本框。基本上,如果用户输入小于2或非数字,如何显示错误。这是我试图遵循的原则 我的代码在下面 创建视图: <%= Html.ValidationSummary()%> <%= using (HtmlBeginForm()){%> <div class="half-col"> <label for="Amount">Amount:</label> <%= Html.Tex

我是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; }
}
错误:

<%= 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


您正在错误地将错误添加到modelstate。您可以在上阅读有关ModelStateDictionary的更多信息

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

ModelState.AddModelError("Amount", "Greater Than 2 Please.");
话虽如此,您可以使用属性来验证模型属性,这样您就不必手工编写所有代码。下面是使用
范围
属性的示例。
RegularExpression
属性也可以工作。下面是一篇包含不同类型属性信息的文章

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; }
}

另外,作为旁注,您下面的教程是针对MVC1和MVC2的。除非你必须使用/学习它。我建议您遵循MVC 5的教程。

您将错误添加到modelstate中的操作不正确。您可以在上阅读有关ModelStateDictionary的更多信息

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

ModelState.AddModelError("Amount", "Greater Than 2 Please.");
话虽如此,您可以使用属性来验证模型属性,这样您就不必手工编写所有代码。下面是使用
范围
属性的示例。
RegularExpression
属性也可以工作。下面是一篇包含不同类型属性信息的文章

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; }
}
另外,作为旁注,您下面的教程是针对MVC1和MVC2的。除非你必须使用/学习它。我建议遵循MVC 5的教程。

更改这一行:

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

第一个参数是正在验证的模型的成员;它可以是空字符串,仅用于指示与字段无关的错误。通过指定“金额”字段,如果您使用所有客户端验证项,它会在内部使用该字段突出显示错误字段(控件应添加输入验证错误CSS类)。

更改此行:

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

第一个参数是正在验证的模型的成员;它可以是空字符串,仅用于指示与字段无关的错误。通过指定金额字段,如果您使用的是所有客户端验证项,则它在内部使用该字段突出显示错误字段(控件应添加输入验证错误CSS类)。

if(productToCreate.Amount<2)
if (productToCreate.Amount < 2)
    ModelState.AddModelError("Amount", "Greater than 2 please");
ModelState.addmodeleror(“金额”,“请大于2”);
if(productToCreate.Amount<2)
ModelState.addmodeleror(“金额”,“请大于2”);

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


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


在MVC中,您不验证文本框,而是验证模型。文本框与模型属性相关联,如果模型的这些属性未验证,则会显示与该属性的文本框相关联的错误。为什么要遵循2009年的教程?如果您想学习asp.net MVC,请学习最新版本。在MVC中,您不验证文本框,而是验证模型。文本框与模型属性相关联,如果模型的这些属性未验证,则会显示与该属性的文本框相关联的错误。为什么要遵循2009年的教程?如果您想学习asp.net MVC,请学习最新版本。感谢您的回答和教程,我尝试了第二种方法,但在“Range”和“ErrorMessage”下会出现一条扭曲的红线,表示“找不到类型或命名空间名称”。(是否缺少using指令或程序集引用?),你知道如何解决这个问题吗?@john如果你使用的是visualstudio,你应该能够
ctrl+。
当你的光标在曲线上时,你可以得到一个要包含的使用列表。如果没有,您只需要:
使用系统;使用System.ComponentModel.DataAnnotations感谢您的回答和教程,我尝试了第二种方法,但在“Range”和“ErrorMessage”下会出现一条扭曲的红线,表示“找不到类型或命名空间名称”。(是否缺少using指令或程序集引用?),你知道如何解决这个问题吗?@john如果你使用的是visualstudio,你应该能够
ctrl+。
当你的光标在曲线上时,你可以得到一个要包含的使用列表。如果没有,您只需要:
使用系统;使用System.ComponentModel.DataAnnotations