如何解决如何在ASP.Net MVC 5.2.7.Net Framework中处理表格中的双数?
我目前在使用asp-mvc生成的视图时,在处理形式上的双数时遇到问题。
让我展示我的模型Eleve,在这里我关注的领域是Moyenne(相对注释是我从先前研究中尝试的最后一个注释):
public class Eleve
{
[Key]
public int Id { get; set; }
public string Nom { get; set; }
[displayFormat(ApplyFormatInEditMode = false,DataFormatString = "{0:P0}")]
[RegularExpression(@"[0-9]+(\.[0-9][0-9]?)?$",ErrorMessage = "Invalid rate")]
public double Moyenne { get; set; }
}
控制器是由ASP MVC 5使用实体框架自动生成的。
视图的相关部分:
<div class="form-group">
@Html.LabelFor(model => model.Moyenne,htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.Moyenne,new { htmlAttributes = new { @class = "form-control decimal-small inline" } })
@Html.ValidationMessageFor(model => model.Moyenne,"",new { @class = "text-danger" })
</div>
</div>
当我使用非整数输入提交表单时,我收到一条错误消息,告诉我(法语)值不正确:
error message
在实践中,我将需要能够在分隔符后使用带有两位小数的数字。目前,仅接受整数。我发现的解决方案似乎已经过时,或者错过了一些东西。
感谢您的帮助!
解决方法
ModelState还针对某些CultureInfo参数进行了验证。由于使用法语 小数点分隔符为“,”,因此在breakPoint中看到0。
这是一个工作环境(使用自动生成的控制器):
想法是更改GET中的CultureInfo更改并在POST中恢复它。
public ActionResult Create()
{
CultureInfo.DefaultThreadCurrentCulture = new CultureInfo("en-US");
return View();
}
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create( Eleve eleve)
{
if (ModelState.IsValid)
{
db.Eleve.Add(eleve);
db.SaveChanges();
return RedirectToAction("Index");
}
CultureInfo.DefaultThreadCurrentCulture = new CultureInfo("fr-FR");
return View(eleve);
}
//
[DisplayFormat(ApplyFormatInEditMode = true,DataFormatString = "{0:0.00}")]
,
您好Benoit essayes comaça
[DisplayFormat(DataFormatString = "{0:#,##0.00#}",ApplyFormatInEditMode = false)]
public double? Moyenne{ get; set; }
tu peux aussi essayer cette regex:
^-?\d(.\d+)?[^.]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。