문제

'추가'및 '제거 된'View로 돌아가고 싶은 두 개의 목록이 있습니다. 그러나 현재는 '추가'또는 '제거 된'만 반환 할 수 있습니다. 한 개체로 둘 다 반환하려면 어떻게해야합니까? 이 코드가 지저분하다면 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());

    }
도움이 되었습니까?

해결책

두 목록을 포함하는 사용자 정의 객체 인 관련 모델로보기를 강력하게 입력하십시오. 이러한 객체는 종종 "뷰 모델"이라고합니다.

예시:

당신의 뷰 모델 :

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
...

다른 팁

이 두 목록을 포함하는 뷰 모델이없는 이유는 무엇입니까?

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

또는

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

여기를 살펴보십시오 : http://www.howmvcworks.net/onviews/buildingastronglytypedview

나는 당신이 첫 번째 것을 원한다고 생각합니다.

Viewbag와 같은 동적 유형을 사용해보십시오

Razor View에서 @viewbag에 액세스 할 수 있습니다

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top