【发布时间】:2013-08-22 13:33:28
【问题描述】:
我将一个序列化的字符串发布到 C# 中的 MVC 操作,其中一个空参数(即 &test=&another=10)映射到值 0.0。请问有什么建议吗?我需要将值评估为 null 而不是 0.0。下面的代码段。 非常感谢!
更新:该值可以是 10、100.00、0.0 或 null。
Ajax 帖子
$.ajax({
type: method,
url: url,
data: data,
dataType: 'json',
success: settings.success,
error: settings.error,
async: !options.sync
});
MVC 控制器
[AcceptVerbs(HttpVerbs.Post)]
[NoCache]
[JsonContractExceptionFilter]
public ActionResult Save(ViewModel data)
{
data.Test == 0.0 // should be null
模型类中的属性
public double? Test
{
get { return obj.test; }
set { obj.test = value; }
}
更新 2 - obj 的内容
public virtual Nullable<double> Test
{
get;
set;
}
更新 3
public ActionResult Save([ModelBinder(typeof(MyModelBinder))] ViewModel data)
{
...
}
自定义活页夹
public class MyModelBinder : DefaultModelBinder
{
public override object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
var request = controllerContext.HttpContext.Request;
// Default binder
var temp = base.BindModel(controllerContext, bindingContext);
// TODO - Find my property and change the value?
return temp;
}
}
【问题讨论】:
-
data是ViewModel不是Query,请显示相关代码。 -
尝试使用字符串属性,然后使用
Convert.ToDouble将其转换为双精度 -
obj.test 可以为空吗?
-
@Vasanth 是双倍的吗? (见底部代码sn-p)
-
引擎盖下的 obj 是什么?有什么理由不使用自动属性?
标签: c# asp.net-mvc