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)

日付はnullとして返されます

モデルまたはオブジェクトをパラメータ タイプとして使用する

public JsonResult MyAction(SomeObject myObject)

public JsonResult MyAction(SomeModel myModel)

MyDate常に MinValue として終了しますが、パラメーター (SomeModel または SomeObject) は null ではありません

何が間違っているのかよくわかりません。誰かが私を正しい方向に向けることができますか? 走る前に唱えなければならない呪文はありますか、それとも外が晴れている必要がありますか? これは、一般的なシナリオでは予想よりもはるかに多くの作業のようです。

4

1 に答える 1

0

そのため、問題は私が思っていたものではないことがわかりました。問題は、PREVIOUS 値をアクションに送信している jQuery UI Datepicker と私のカルチャ設定にあります。日付ピッカーは でフォーマットされていますが、MVCはそれを正しく解析しても、それdd/MM/yyを米国スタイルとして解釈しようとします。これが、日付が null として返される主な理由です。この2つの問題について質問を書きます。MM/dd/yyDateTime.Parse

解決策については、以下を使用すると実際に機能します。

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