【发布时间】:2017-08-12 23:33:47
【问题描述】:
我的剃刀视图上有一个字段如下
@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 中使用实体模型结构。字段持续时间在数据库表“活动”中定义(我在剃须刀上使用的模型相同)作为浮点数。但实体元数据显示为 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."
如何为另一种资源语言修复它?任何帮助将不胜感激
【问题讨论】:
-
法国人不要使用逗号作为点 (3,5) 而不是句点 (3.5)。
-
@Dave Becker - 是的,你说得对,但在数据库方面,我把它当作浮点数。我是否将其更改为字符串?
-
@KulOmkar 您可能需要在服务器端进行格式化(法语),因此值
3.5输出为3,5,请参阅此帖子:stackoverflow.com/questions/1559185/…
标签: c# asp.net-mvc-4 razor entity-framework-6