0

私の質問の奇妙さから、私は正しい方向に進んでいないのではないかと思います。

他のいくつかのアイテムの中でページ分割されたリストを持つビューがあるとします。最初の読み込みで、リストはリストの最初のページで読み込まれます (これはJsonResult、モデルからコントローラーでメソッドを呼び出そうとしているところです)。

public class FooListViewModel
{
    public FooListViewModel()
    {
        DateTime today = DateTime.Today;
        DateTime later = DateTime.Today.AddDays(5);

        // Here I need to make call to my JsonResult method 
        // in the controller to populate fooItems
    }

    public IEnumerable<FooItem> fooItems { get; private set; }
    public IEnumerable<DateTime> dates { get; private set; }

}

コントローラ内

[HttpGet]
public JsonResult GetItems(DateTime start, DateTime end)
{
    var fooItems = domainServices.Foo.GetAllFooItems();

    // Add predicates to filter between start and end dates.

    return Json(fooItems, JsonRequestBehavior.AllowGet);
}

ページボタンがクリックされるたびに、AJAX を介してコントローラー内のメソッドへの別の呼び出しでリストのみをリロードJsonResultしますが、これは既に行われています。

4

2 に答える 2

2

ページがロードされたときにクライアントでボタンのクリックをシミュレートする方が簡単です。その後、すべてのデータの取得、ページへの挿入、および正しくフォーマットするルーチンが 1 つしかありません。

それ以外の場合は、コントローラ ルーチン (Index?) が呼び出す GetData 関数と、必要なデータを取得するために GetJSON ルーチンが呼び出す GetData 関数を作成します。index メソッドはこれをモデルに貼り付けてビューに渡し、GetJSON ルーチンは結果を json として返すだけです。

サンプルコード:

public ActionResult Index()
{
    MyViewModel model = new MyViewModel();
    model.data = GetData();
    return View(model);
}

public JsonResult GetJson(DateTime startDate,DateTime endDate)
{
    var result=GetData(startDate,endDate);
    return Json(result);
}

private IEnumerable<MyData> GetData(DateTime startDate=null,DateTime endDate=null)
{
    return something;
}
于 2013-06-03T19:56:54.570 に答える