0

我意识到这个问题已经被问过很多次了。但是,没有一个解决方案对我有用。

问题:

我有一个对象:

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)不为空

我不太确定我做错了什么。谁能指出我正确的方向?跑步前有没有我必须念诵的咒语,或者外面必须是晴天?对于一个常见的场景,这似乎比预期的要多得多。

4

1 回答 1

0

所以事实证明问题不是我想的那样。问题在于 jQuery UI Datepicker,它将 PREVIOUS 值发送到操作和我的文化设置。日期选择器被格式化,dd/MM/yy但 MVC 试图将其解释为美国风格MM/dd/yy,即使它DateTime.Parse解析正确。这就是日期返回为空的主要原因。我将围绕这两个问题写问题。

至于解决方案 - 使用以下确实有效:

public JsonResult MyAction(SomeObject myObject)
于 2011-05-26T05:52:15.963 回答