- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的 Razor View 中有一个字段如下
@Html.TextBoxFor(model => model.Duration, new { @class = "form-control txtSite input-large rounded-custom", name = "Duration", @type = "number", min = "0", id = "durationId", required = "true", Tabindex = "1", value = "0" })
@Html.ValidationMessageFor(model => model.Duration, "", new { style = "color: red" })
我在 MVC 中使用了实体模型结构。字段持续时间在数据库表“Activity”(我在 Razor 上使用的相同模型)中定义为 Float。但是实体元数据将其显示为 Double,如下所示。
public Nullable<double> Duration { get; set; }
我使用部分类作为 Activity.cs 进行所需的验证,如下所示
[MetadataTypeAttribute(typeof(Activity.Metadata))]
public partial class Activity
{
internal sealed class Metadata
{
[Required(ErrorMessageResourceType = typeof(Resources.Common), ErrorMessageResourceName = "PleaseEnterDuration")]
public Nullable<double> Duration { get; set; }
}
}
在 Controller 上我的代码是这样的
[HttpPost]
public ActionResult AddActivity(Activity model)
{
if (ModelState.IsValid)
{
//Some Code
}
}
奇怪的是,当我显示标签的资源语言是英语时,我的代码适用于浮点值,而当我将其更改为另一种语言(法语)时它不起作用。这里 ModelState.IsValid 返回 false。我收到错误信息
"The value 3.5(any float value) is invalid for Duration."
如何为另一种资源语言修复它?。任何帮助将不胜感激
最佳答案
您收到该错误是因为您网站的文化设置为不使用点 .
作为小数点分隔符的语言(法语)。但是,Duration
的条目中有一个点,因此您的模型状态评估为无效。
换句话说,您的网站(服务器端)是法语文化,但浏览器或您使用的任何客户端都不是法语。
修复
您需要同步客户端和服务器的语言在每次请求时:确保设置文化的代码针对每个请求执行,而不仅仅是在应用程序启动时执行。用户可以在请求之间切换语言。将 CurrentCulture
设置为适当的语言将使用该语言的数字格式、日期时间格式等。
此外,建议但不是必须解决您的问题,您还应该设置 CurrentUICulture
,它将从您的语言资源文件中获取标签、消息等(如果您有任何资源文件)。
按照@orhun.begendi 上面的回答来设置以上 2 项。
关于c# -ModelState.IsValid 仅在资源语言更改时返回 false?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42924788/
我的 Controller 代码如下: [HttpPost] public ActionResult Create(ExampleViewModel model) { model.User.R
我正在开发 MVC5 代码优先应用程序。 在一个模型的 Edit() View 中,我包含了 [Create] 按钮,用于从 Edit() 中向其他模型添加新值> 查看并在 Edit() 上的 Dro
我的 MVC 应用程序中有一个问题,我不确定如何解决,或者我是否以错误的方式解决了这个问题。 我有一个 Controller / View ,它在带有复选框的网格中显示项目列表,当项目发布到我的 Co
我想知道是否可以自动将错误添加到 ModelState,以便检查我的 else 条件? if (ModelState.IsValid) { //Do something } else {
我有一个带有必需属性的模型对象 public class ApiPing { [Required] public DateTime ClientTime { get; set; }
如何测试 Controller.ViewData.ModelState?我宁愿在没有任何模拟框架的情况下这样做。 最佳答案 当然,如果您对数据使用存储库模式,则不必使用 Mock。 一些例子: htt
我正在使用 ASP.NET-MVC Core 2.1,我的代码中有这个 ViewModel 类 public class HomeViewModel { public
我有一个非常简单的 MVC 2 表单。它有两个下拉菜单,用户和角色。无论我选择什么,员工下拉列表都会通过验证,而角色下拉列表不会通过验证。尽管我计划实现一个,但没有默认的“空”选项,这就是为什么我需要
例如,有一个 Web Api 操作方法: public HttpMessageResponse Post(UserDto userDto) { if (!this.ModelState.IsV
如果我有以下模型: public class Model { public int ModelID { get; set; } public string Title { get; s
我的 DropDownLists 有一些问题,因为当我发布信息并且我的模型无效时,它返回“空”到页面触发错误,就像 this question . 我已经使用那里提出的解决方案,它解决了我的问题。无论
我的 DropDownLists 有一些问题,因为当我发布信息并且我的模型无效时,它返回“空”到页面触发错误,就像 this question . 我已经使用那里提出的解决方案,它解决了我的问题。无论
我想从 html 页面上的 dropdownList 获取参数并将其发送到我的 Controller ,创建新的模型对象,并将其插入数据库。 这是我的 Controller (创建 My_Model
我几乎总是想在回发时检查 ModelSate.IsValid 是否被调用。而且必须在每次回发开始时进行检查违反了 DRY 原则,有没有办法让它自动检查? 例子: [HttpPost("Register
我的模型类如下: public class PostInputViewModel { [Required] [MinLength(1)] [Ma
如何在 WEB Api .net 框架中将模型状态键设置为驼峰式大小写。 我使用 JsonProperty 特性将属性名称设置为驼峰式大小写。现在我希望 modelstate 与 json(驼峰式)相
所以,我有一个我很好奇的问题。我有一个 UserAccountViewModel,我正在重复使用它来创建帐户 View 和编辑帐户 View 。这样我就可以为我的代码使用一个 View 和一个 Vie
我正在编写一个 MVC 应用程序,其中包含一个对其进行验证的表单。 当我查询错误时,像这样: foreach (ModelState modelState in ViewData.ModelState
使用 MVC 时,当属性级别出现错误时,我们可以将错误添加到 ModelState但同样的错误也被添加到摘要中。我们如何避免显示它两次。 我只想在消息摘要中显示公共(public)错误,而在属性级别显
我有以下代码: public class EventController : ApiController { public IHttpActionResult Post(List Events
我是一名优秀的程序员,十分优秀!