gpt4 book ai didi

asp.net - 为什么 ASP.NET MVC 3 无法正确验证我的 float ?

转载 作者:行者123 更新时间:2023-12-01 22:28:23 44 4
gpt4 key购买 nike

我有一个允许输入的 View ,字段在我的 SQL Server 2008 R2 数据库中设置为 float ,并且我正在使用 Entity Framwork 4。

在 Entity Framework 模型中,该字段如下所示 private Nullable<global::System.Double> _TestNumber;

View 使用 EditorField 来允许如下输入:

<div class="editor-field">
@Html.EditorFor(model => model.TestNumber)
@Html.ValidationMessageFor(model => model.TestNumber)
</div>

但是,我在验证消息中收到此错误:The value '13.51' is not valid for TestNumber.我尝试过用逗号代替句号,同样的事情。

建议?

最佳答案

这应该有效:

查看模型:

public class MyViewModel
{
public double? TestNumber { get; set; }
}

Controller :

public class HomeController : Controller
{
public ActionResult Index()
{
return View(new MyViewModel { TestNumber = 13.51 });
}

[HttpPost]
public ActionResult Index(MyViewModel model)
{
return View(model);
}
}

查看:

@model AppName.Models.MyViewModel
@{
ViewBag.Title = "Home Page";
}
@using (Html.BeginForm())
{
@Html.EditorFor(x => x.TestNumber)
@Html.ValidationMessageFor(x => x.TestNumber)
<input type="submit" value="OK" />
}

您可以检查并可以解释您所观察到的行为的一件事是客户端文化和服务器端文化之间的不一致。因此,例如,如果您启用了客户端验证,但客户端区域性使用 , 作为小数分隔符,则 13.51 将失败客户端验证,并且如果服务器区域性使用 . 作为小数点分隔符,那么 13,51 将无法通过服务器端验证。因此 13.5113,51 都无法验证,但在不同的层上。为了使服务器使用与客户端相同的区域性,您可以在 web.config 中将以下区域性设置为 auto:

<globalization 
requestEncoding="utf-8"
responseEncoding="utf-8"
culture="auto"
uiCulture="auto"
/>

关于asp.net - 为什么 ASP.NET MVC 3 无法正确验证我的 float ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4680641/

44 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com