abd*_*mon 1 globalization validation asp.net-mvc
我已将 Action Filer 中的文化设置为
Thread.CurrentThread.CurrentCulture = Thread.CurrentThread.CurrentUICulture = new CultureInfo(culture);
Run Code Online (Sandbox Code Playgroud)
其中文化 = {fr-be} => 法国比利时。
仅供参考,此操作过滤器设置了用户选择的文化。
其中一个 myAction 用户正在以 [dd/mm/yyyy] => 26/7/2011 格式输入日期。动作如下
public ActionResult RequestVacation(VacationRequest model)
{
if(ModelState.IsValid)
{
Run Code Online (Sandbox Code Playgroud)
....
当我对代码模型进行调试时。VacationDate 包含 01/01/0001 ;虽然它应该是 7/26/2011 而 Form[VacationDate] 包含 26/07/2011 [这是在 Fr-BE 甲酸盐] 并且 ModelState.IsValid 是假的;虽然它应该是真的,因为日期在 fr-be 格式中是正确的。当我继续挖掘但在视觉工作室检查当地人时,我发现
this.ModelState[1].Culture = {en-US}
Run Code Online (Sandbox Code Playgroud)
而我已经使用 actionFilter 设置了文化值,如上所述。我的问题是如何设置 this.ModelState.Culture = {fr-be}?
回答您的问题有点晚了,但我想正在发生的事情是您正在操作过滤器的 OnActionExecuting 方法中设置当前线程文化,但模型绑定发生在此之前,因此它不会接受您的更改。
在模型绑定发生之前,您需要移动将区域性设置为管道中较早位置的代码,例如在 Application BeginRequest 方法中,或者如果您需要在会话中存储区域性,则在 AcquireRequestState 中。
| 归档时间: |
|
| 查看次数: |
3183 次 |
| 最近记录: |