我意识到这个问题已经被问过很多次了。但是,没有一个解决方案对我有用。
问题:
我有一个对象:
public class SomeObject
{
[Remote("MyAction", "MyController")]
public DateTime MyDate { get; set; }
}
还有一个模型:
public class SomeModel
{
public SomeObject MyObject { get; set; }
}
和我的行动:
public JsonResult MyAction(DateTime MyDate)
{
//do some validation here
}
当验证开始时,因为它是一个复杂的对象,它会发送一个如下所示的 URL:
http://localhost/MyController/MyAction?MyObject.MyDate=xxxxxxxx
显然这意味着我的操作不会选择日期,因为参数名称与查询字符串名称不匹配。
我进行了广泛的搜索,看到了很多建议——所有这些我都尝试过,但都没有奏效。以下是我尝试过的:
使用绑定属性
public JsonResult MyAction([Bind(Prefix = "MyObject")]DateTime MyDate)
和
public JsonResult MyAction([Bind(Prefix = "MyObject.MyDate")]DateTime MyDate)
日期只是返回为空
使用模型或对象作为参数类型
public JsonResult MyAction(SomeObject myObject)
和
public JsonResult MyAction(SomeModel myModel)
MyDate
总是以 MinValue 结尾,但参数(SomeModel 或 SomeObject)不为空
我不太确定我做错了什么。谁能指出我正确的方向?跑步前有没有我必须念诵的咒语,或者外面必须是晴天?对于一个常见的场景,这似乎比预期的要多得多。