Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.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.NETMVC5.2.7(.NETFramework)中处理表单中的双精度数字? 我目前在使用asp mvc生成的视图时,在表单中处理双倍数字时遇到了一个问题 让我展示一下我的模型Eleve,这里我关注的领域是Moyenne(相对注释是我从以前的研究中最后尝试的):_C#_Asp.net Mvc_Validation_Razor - Fatal编程技术网

C# 如何在ASP.NETMVC5.2.7(.NETFramework)中处理表单中的双精度数字? 我目前在使用asp mvc生成的视图时,在表单中处理双倍数字时遇到了一个问题 让我展示一下我的模型Eleve,这里我关注的领域是Moyenne(相对注释是我从以前的研究中最后尝试的):

C# 如何在ASP.NETMVC5.2.7(.NETFramework)中处理表单中的双精度数字? 我目前在使用asp mvc生成的视图时,在表单中处理双倍数字时遇到了一个问题 让我展示一下我的模型Eleve,这里我关注的领域是Moyenne(相对注释是我从以前的研究中最后尝试的):,c#,asp.net-mvc,validation,razor,C#,Asp.net Mvc,Validation,Razor,控制器是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">

控制器是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>

@LabelFor(model=>model.Moyenne,htmlAttributes:new{@class=“controllabel col-md-2”})
@EditorFor(model=>model.Moyenne,new{htmlAttributes=new{@class=“form-control-decimal-small-inline”})
@Html.ValidationMessageFor(model=>model.Moyenne,“,new{@class=“text danger”})
当我使用非整数输入提交表单时,会收到一条错误消息(法语)告诉我该值不正确:
实际上,我需要能够使用分隔符后面有2位小数的数字。目前,只接受整数。看来我找到的解决方案已经过时了,或者我错过了什么。

谢谢你的帮助

你好Benoit essayes commeça

[DisplayFormat(DataFormatString = "{0:#,##0.00#}", ApplyFormatInEditMode = false)]
public double? Moyenne{ get; set; }
这是一个很好的例子:

^-?\d(.\d+)?[^.]

还根据一些CultureInfo参数验证了ModelState。由于使用法语, 小数点分隔符为“”,因此在断点中可以看到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}")]

如果我错了,请纠正我-但在法国,官方的十进制分隔符是逗号,而不是点?您是否尝试过改为键入
3,2
?这里的问题似乎是一个典型的区域设置问题。是的,我尝试了这两种方法,因为我怀疑这是问题所在,它给出了相同的结果。顺便说一句,你的观点在大多数情况下都是正确的,但在使用电脑时,法国人通常使用“.”作为分隔符。您好,谢谢您的回答。我同时尝试了这两种方法,但这一次我仍然收到一条错误消息,“无效率”。你自己试过吗?
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}")]