gpt4 book ai didi

c# - MVC3 模型验证不适用于双

转载 作者:太空狗 更新时间:2023-10-29 23:34:21 25 4
gpt4 key购买 nike

我在 MVC 中验证时遇到问题,我的模型有双重属性,当我提交 10.30 或任何带有“.”的内容时里面告诉我“值(value)'10.30'对价格无效”。我做了一些研究,他们说模型验证应该是文化不变的,我认为这可能是问题所在,因为我的浏览器和服务器是法语的,但它不应该。

这是我的代码:

[HttpPost]
[ValidateAntiForgeryToken]
[Authorize(Roles = "Admin")]
[ValidateInput(false)]
public virtual ActionResult Edit(AuctionModel model)
{
if (ModelState.IsValid)
{
//do the work
}
return View(model);
}

public class AuctionModel
{
public string Id { get; set; }
[Required(ErrorMessageResourceType = typeof(Strings), ErrorMessageResourceName = "FieldMandatory")]
[LocalizedDisplayName("Title")]
public string Title { get; set; }
[Required(ErrorMessageResourceType = typeof(Strings), ErrorMessageResourceName = "FieldMandatory")]
[LocalizedDisplayName("Description")]
public string Description { get; set; }
[Required(ErrorMessageResourceType = typeof(Strings), ErrorMessageResourceName = "FieldMandatory")]
[LocalizedDisplayName("Photo")]
public string Photo { get; set; }
[Required(ErrorMessageResourceType = typeof(Strings), ErrorMessageResourceName = "FieldMandatory")]
[LocalizedDisplayName("StartDate")]
public DateTime StartDate { get; set; }
[Required(ErrorMessageResourceType = typeof(Strings), ErrorMessageResourceName = "FieldMandatory")]
[LocalizedDisplayName("Price")]
public double Price { get; set; }
}

感谢您的帮助!

最佳答案

最后我关注了 Haacked 的这篇帖子:

http://haacked.com/archive/2011/03/19/fixing-binding-to-decimals.aspx

而且效果很好。

代码如下:

public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
var valueResult = bindingContext.ValueProvider.GetValue(bindingContext.ModelName);
var modelState = new ModelState { Value = valueResult };
object actualValue = null;
try
{
actualValue = Convert.ToDecimal(valueResult.AttemptedValue, CultureInfo.InvariantCulture);
}
catch (FormatException e)
{
modelState.Errors.Add(e);
}

bindingContext.ModelState.Add(bindingContext.ModelName, modelState);
return actualValue;
}

在 global.ascx 中:

ModelBinders.Binders.Add(typeof(decimal), new DecimalModelBinder());

关于c# - MVC3 模型验证不适用于双,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5745917/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com