加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

为什么ASP.NET MVC 3没有正确验证我的浮动?

发布时间:2020-12-16 04:23:01 所属栏目:asp.Net 来源:网络整理
导读:我有一个允许输入的视图,我的SQL Server 2008 R2数据库中的字段设置为float,我正在使用Entity Framwork 4. 在实体框架模型中,该字段看起来像私有Nullable global :: System.Double _TestNumber; View使用EditorField来允许这样的输入: div class="editor-fi
我有一个允许输入的视图,我的SQL Server 2008 R2数据库中的字段设置为float,我正在使用Entity Framwork 4.

在实体框架模型中,该字段看起来像私有Nullable< global :: System.Double> _TestNumber;

View使用EditorField来允许这样的输入:

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

但是我在验证消息中收到此错误:值’13 .51’对TestNumber无效.我试过逗号而不是句号,同样的事情.

建议?

解决方法

这应该工作:

查看型号:

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

控制器:

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.51和13,51都无法验证,但在不同的层上.为了使服务器使用与客户端相同的文化,您可以在web.config中将以下文化设置为auto:

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读