1

ビューの 3 つのドロップダウンから DateTime オブジェクトを構築する必要があります。モデル バインディングの構築は、現在の MVC に関する私の知識レベルには少し複雑すぎます (いくつかの記事を読みました)。同様に、DateTime プロパティにバインドする必要はありませんが、ViewModel プロパティからオブジェクトを構築できます。

public IEnumerable<SelectListItem> Months
public IEnumerable<SelectListItem> Days
public IEnumerable<SelectListItem> Years

そうすることは可能ですか?同様に、Ajax を使用して、月と年に応じて適切な日数を設定することもできます (閏年に注意してください)。私はまだこのようなことには慣れていないので、参照するサンプル コードや記事は大歓迎です。ありがとうございました。

4

1 に答える 1

1

モデルバインディングは簡単です。それを恐れないでください。厳密に型指定されたビューは、将来の可読性と保守性のためにコードをクリーンに保ちます。マイクロソフトは、私たちのような人々が使用できるように、これらの新機能をリリースします。私たちはそれらを恐れるべきではありません!

DateTime 値を保持するプロパティを用意し、他のライブラリを使用して、エンド ユーザーに優れた日付選択エクスペリエンスを提供してみませんか? jQuery UI カレンダーは、考えられる 1 つのオプションです。

http://jqueryui.com/demos/datepicker/

ViewModel に DateTime タイプ プロパティを追加します。

public class AlbumViewModel
{
  public int ID { set;get;}
  public DateTime CreatedDate { set;get;}
}

get アクション メソッドで、このビューモデルのオブジェクトをビューに返すことができます。

public ActionResult AddAlbum()
{
  AlbumViewModel objItem=new AlbumViewModel();
  return View(objItem);
}

このビューモデルで厳密に型指定されたビューを使用し、jQuery UI カレンダーを使用してカレンダーを取得します。

 @model AlbumViewModel
 //include jQuery and jQuery UI 
 @using (Html.BeginForm())
 {
    <p>Select Date
     @Html.TextBoxFor(m=>m.CreatedDate)
     <input type="submit" value="Save" /> 
    </p>
 }
 <script type="text/javascript">
    $(function() {
      $( "#CreatedDate").datepicker();
    });
  </script>

そしてあなたの投稿で アクション

[HttpPost]
public ActionResult AddAlbum(AlbumViewModel objItem)
{
  //Check the objItem.CreatedDate here. Save it or do whatever you want 
  return View(objItem);
}
于 2012-04-17T16:24:51.637 に答える