【发布时间】:2015-09-22 15:00:01
【问题描述】:
我拼命尝试让 asp.net 使用逗号符号作为小数分隔符,但这似乎比必要的要困难得多......
我已经完成了本教程中的所有内容http://www.asp.net/mvc/overview/getting-started/introduction/examining-the-edit-methods-and-edit-view
在根网络配置中尝试过这个
<system.web>
<globalization culture="de-DE" uiCulture="de-DE" />
</system.web>
逐步浏览 jQuery 代码 - 那里的全球化似乎奏效了。
我正在使用带有模型视图控制器的 get 请求,看起来像这样
public class SearchCalcViewModel
{
public SearchCalcViewModel() { }
public IEnumerable<Calculation> Calculations { get; set; }
[Display(Name="Name")]
public string Name { get; set; }
[Display(Name="Height")]
public decimal? Height { get; set; }
}
get 请求是在主控制器中调用的——这加强了我的假设,即 jquery 文化相关的验证正在工作,并且 .net 文化中的某些东西是错误的,即使 Thread.CurrentTHread.CurrentCulture / CurrentUICulture 也设置正确。
当我尝试填写 3,0 作为高度时,我收到以下错误消息:
值“3,0”对高度无效。
这是我观点的重要部分:
@using (Html.BeginForm("Search", "Main", FormMethod.Get))
<div class="form-group">
@Html.LabelFor(m => m.Height, new { @class = "col-md-2 control-label" })
<div class="col-md-10">
@Html.TextBoxFor(m => m.Height, new { @class = "form-control"})
@Html.ValidationMessageFor(m => m.Height)
</div>
</div>
}
这是我的主控制器:
public ActionResult Search(SearchCalcViewModel searchViewModel)
{
searchViewModel.Products = db.Products;
searchViewModel.Calculations = from c in db.Calculations select c;
if (searchViewModel.Height.HasValue)
{
searchViewModel.Calculations = searchViewModel.Calculations.Where(c => c.Length == searchViewModel.Height);
}
return View(searchViewModel);
}
我已经进入了模型状态,但文化与我目前的文化有所不同
【问题讨论】:
-
你有什么问题。您是否收到客户端验证错误(并且表单未提交)
-
正如我所说,get 请求是在我的控制器中调用的,所以据我所知它不可能是客户端验证错误?如果我错了,请纠正我
-
那么问题出在哪里? - 您没有显示您的视图或您的控制器方法或指示您的错误(有错误吗?)发生的位置。您的实际问题是什么?
-
我编辑了我原来的问题更清楚
-
您能否暂时禁用客户端验证(在视图中添加
@ { HtmlHelper.ClientValidationEnabled = false; HtmlHelper.UnobtrusiveJavaScriptEnabled = false; }以确认这是服务器端问题。
标签: c# jquery asp.net asp.net-mvc globalization