10

ビューに戻したい「追加」と「削除」の 2 つのリストがあります。ただし、現在、「追加」または「削除」のいずれかしか返すことができません。1 つのオブジェクトで両方を返すにはどうすればよいですか? 私は MVC に非常に慣れていないため、このコードが乱雑である場合は申し訳ありません!

public ActionResult Index()
    {
        // Excel upload history

        var fptexcel = db.FPTStaticDataRatedFinancialAssetBase
                       .OrderBy(e => e.FORATExcelId)
                       .Select(e => e.FORATExcelId).Max();

        var fptexcelprevious = fptexcel - 1;

        var newassets = db.FPTStaticDataRatedFinancialAssetBase.OfType<FPTStaticDataRatedFinancialAssetBase>()
                        .Where(c => c.FORATExcelId == fptexcel || c.FORATExcelId == fptexcelprevious)
                        .GroupBy(x => x.Name)
                        .Where(c => c.Count() == 1)
                        .Select(y => y.FirstOrDefault()).ToList();

        var added = db.FPTStaticDataRatedFinancialAssetBase.OfType<FPTStaticDataRatedFinancialAssetBase>()
                         .Where(x => x.FORATExcelId == fptexcelprevious)
                         .Select(x => x).ToList();

        var removed = db.FPTStaticDataRatedFinancialAssetBase.OfType<FPTStaticDataRatedFinancialAssetBase>()
                         .Where(x => x.FORATExcelId == fptexcel)
                         .Select(x => x).ToList();

        return View(newassets.Except(added).ToList());

    }
4

3 に答える 3

13

ビューを厳密に型指定して、両方のリストを含むカスタム オブジェクトである関連付けられたモデルとして表示します。このようなオブジェクトは、「viewModel」と呼ばれることが多いことに注意してください。

例:

あなたのビューモデル:

public class MyViewModel
{
    public List<X> Added { get; set; }
    public List<X> Removed { get; set; }
}

あなたのコントローラー:

public ActionResult Index()
{
    var viewModel = new MyViewModel
    {
        Added = ...,
        Removed = ...
    };
    return View(viewModel);
}

あなたの見解:

@model XXXXX.MyViewModel
...
于 2013-11-07T15:10:13.940 に答える
7

これら2つのリストを含むViewModelを持たない理由

return View(new MyModel{List1 = list1,List2 = list2});

また

ViewData["List1"] = list1;
ViewData["List2"] = list2;
return View();

ここを見てください:http://www.howmvcworks.net/OnViews/BuildingAStronglyTypedView

私はあなたが最初のものを望んでいると思います。

于 2013-11-07T15:08:45.107 に答える
1

ViewBag のような動的タイプを使用してみてください

Razor View で @viewbag にアクセスできます

于 2013-11-07T15:13:09.853 に答える