C# 如何在ASP.NET MVC中验证文本框
我是ASP.NET MVC新手,正在尝试验证文本框。基本上,如果用户输入小于2或非数字,如何显示错误。这是我试图遵循的原则 我的代码在下面 创建视图: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
<%= 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代码>