C# MVC 5未正确验证StringLength属性
我试图验证PersonPaymentDetails模型中的sortCode字段,但我的视图无法验证StringLength 6。如果我提交的表单的长度值为1,则它会错误地成功验证 我在这里犯了什么根本性的错误吗C# MVC 5未正确验证StringLength属性,c#,asp.net-mvc,entity-framework,model,asp.net-mvc-5,C#,Asp.net Mvc,Entity Framework,Model,Asp.net Mvc 5,我试图验证PersonPaymentDetails模型中的sortCode字段,但我的视图无法验证StringLength 6。如果我提交的表单的长度值为1,则它会错误地成功验证 我在这里犯了什么根本性的错误吗 /* [CONTROLLER] */ public class PersonController : Controller { [HttpGet] [Route("person/paymentDetails/create/{personId?}")] public Actio
/* [CONTROLLER] */
public class PersonController : Controller
{
[HttpGet]
[Route("person/paymentDetails/create/{personId?}")]
public ActionResult PaymentDetailsCreate(int? personId)
{
if (personId == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
Person person = db.People.Find(personId);
if (person == null)
{
return HttpNotFound();
}
PersonPaymentDetailsViewModel personPaymentDetailsVM = new PersonPaymentDetailsViewModel();
personPaymentDetailsVM.SetPerson(person);
return View(personPaymentDetailsVM);
}
[HttpPost]
[Route("person/paymentDetails/create")]
public ActionResult PaymentDetailsCreate(PersonPaymentDetailsViewModel personPaymentDetailsVM)
{
if (ModelState.IsValid)
{
/* should not be entering here with sortCode = 123, as not 6 characters in length */
return Content("No errors: |" + personPaymentDetailsVM.SinglePaymentDetails.sortCode + "|");
}
}
}
/* [VIEW] */
@model X.ViewModels.PersonPaymentDetailsViewModel
@Html.ValidationSummary()
@using (Html.BeginForm("PaymentDetailsCreate", "Person", FormMethod.Post, new { @class = " form-horizontal" }))
{
@Html.HiddenFor(m => m.Person.id, "default")
<div class="form-group">
<label for="bankSortCode" class="col-md-3 control-label">Sort Code</label>
<div class="col-md-9">
@Html.EditorFor(m => m.SinglePaymentDetails.sortCode, new { htmlAttributes = new { @class = "form-control" } })
</div>
</div>
<div class="form-group">
<label for="save" class="col-md-3 control-label"> </label>
<div class="col-md-9">
<button type="submit" class="btn btn-primary">Save</button>
</div>
</div>
}
/* [MODEL] */
public partial class PersonPaymentDetails
{
public int id { get; set; }
[Required, StringLength(6)]
public string sortCode { get; set; }
}
/* [ViewModel] */
public class PersonPaymentDetailsViewModel
{
public Person Person { get; set; }
public PersonPaymentDetails SinglePaymentDetails { get; set; }
public void SetPerson(Person person)
{
this.Person = person;
this.SinglePaymentDetails = new PersonPaymentDetails();
}
}
你想要
[Required, StringLength(6, MinimumLength = 6)]
StringLength的构造函数只接受最大长度,因此当您当前拥有它时,它会检查字符串长度是否不超过6个字符,因此长度为1的字符串成功通过验证。您想要什么
[Required, StringLength(6, MinimumLength = 6)]
StringLength的构造函数只接受最大长度,因此您当前使用它时,它会检查字符串长度不超过6个字符,因此长度为1的字符串成功通过验证。真不敢相信我没有注意到这一点!泰康不相信我没有注意到这一点!泰