0

こんにちは、私はモデルを持っていて、Datetime 型のプロパティを持っています。フォームを投稿すると、日付プロパティの時間は 23:59 になるはずです。どちらの方法でも意味があります。

  • カスタム モデル バインダーの作成
  • アクションメソッドで日付を更新
  • jQuery datetimepicker を使用しており、その形式は mm.dd.yy で、時間は含まれていません。

    [Authorize, HttpPost]
    public ActionResult Edit(int? id, OrderFormViewModel formModel)
    {
        var model = repository.GetShippingsById(id.Value);
    
        if (TryUpdateModel(model, "Order"))
        {
            model.Date = new DateTime(formModel.Order.Date.Year, formModel.Order.Date.Month, formModel.Order.Date.Day, 23, 59, 59);
    
            repository.Save();
            return RedirectToAction("Details", new { @id = model.Id });
        }
    
        return View(formModel);
    }
    
4

2 に答える 2

0

私はあなたの2番目のオプションを使用します-動作中の更新。理由:

  • 論理的にはコントローラーに属します(ビューには、ビューに関連する以外の計算はありません)
  • C#で行うのははるかに簡単です
  • より簡単でメンテナンスが簡単

しかし、いつものように、あなたの質問に対する正しい答えはありません。使いやすさ、保守性、理解しやすさまで...残りはご存知でしょう...

お役に立てれば。

于 2012-09-21T18:40:47.753 に答える
0

時間 (および時間は定数値) を追加したいという問題のみの場合は、ActionFilterAttribute を使用し、時間のバインドのステップで使用できます。この場合、アクチンで正しい日付の値を取得します。

カスタムフォームサブミットを使えばJS経由で値を更新できますが、この場合はローカライズに注意を払う必要があります(それが重要な場合)。

したがって、私の意見では ActionFilterAttribute の方が良い方法です。

ただし、モデルを更新できる場合は、次のようなプロパティを作成できます。

private DateTime _date 
public DateTime Date{
  set{
   this._date = value; 
    //ADD CODE TO ADD HOURS
   }
  get{return _date ;}
}
于 2012-09-21T18:33:56.973 に答える