我有一个带有特定视图的 Asp.net MVC 应用程序,该视图具有带有float
属性的模型。
我的服务器语言环境说这,
是十进制符号,当我编辑模型并在文本框中输入例如7,5并将其发布到服务器时,它工作正常。默认模型绑定器能够按预期将此值绑定到7 个半。
但是当我使用 显示相同的值时<%= this.Model.FloatValue %>
,十进制符号被转换为.
这意味着<%= %>
显然忽略了服务器区域设置。
所以。那我该如何解决这个问题呢?应该使用哪个语言环境?表示十进制符号的服务器系统语言环境,
或设置为的浏览器语言环境设置en-gb
,这意味着这.
是十进制符号。
反正。我只是希望它能够可靠地工作。
一些代码:
我的控制器动作:
public ActionResult Settings()
{
Settings result = this.Service.GetActiveSettings();
return View(result);
}
[HttpPost]
[HandleModelStateException]
public ActionResult Settings(Settings data)
{
if (!this.ModelState.IsValid)
{
throw new ModelStateException(); // my custom exception which isn't important here
}
Settings result = this.Service.SaveSettings(data);
return Json(result);
}
第二个是使用异步调用的$.ajax()
。
局部视图的相关部分:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<Settings>" %>
<div class="data">Float value: <strong><%= this.Model.FloatValue %></strong></data>
<div class="data">Integer value: <strong><%= this.Model.IntValue %></strong></data>
...
任何我的模型类:
/// <summary>
/// Represents application specific settings.
/// </summary>
public class Settings
{
/// <summary>
/// Gets or sets the integer value.
/// </summary>
/// <value>Integer value.</value>
[Required(ErrorMessageResourceType = typeof(Resources.Settings), ErrorMessageResourceName = "QuotaRequired")]
[Range(0, 365*24, ErrorMessageResourceType = typeof(Resources.Settings), ErrorMessageResourceName = "QuotaRange")]
public int IntValue { get; set; }
[Required(ErrorMessageResourceType = typeof(Resources.Settings), ErrorMessageResourceName = "WorkdayRequired")]
[Range(.5, 24.0, ErrorMessageResourceType = typeof(Resources.Settings), ErrorMessageResourceName = "WorkdayRange")]
public float FloatValue { get; set; }
}
如您所见,这里没有什么不寻常的地方。哦,顺便说一句:范围验证FloatValue
也不起作用。