سؤال

لدي قائمتان أرغب في العودة إلى العرض ، "أضاف" و "إزالته". ومع ذلك ، لا يمكنني حاليًا إلا إما "إضافة" أو "إزالتها". كيف يمكنني إعادة كلاهما في كائن واحد؟ أنا جديد جدًا على 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());

    }
هل كانت مفيدة؟

المحلول

اكتب بقوة العرض الخاص بك بحيث يكون نموذجًا مرتبطًا به كائن مخصص يحتوي على كلا القائمتين. لاحظ غالبًا ما يشار إلى أن مثل هذا الكائن "ViewModel".

مثال:

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

نصائح أخرى

لماذا لا يكون لديك عرض ViewModel يحتوي على هاتين 2

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

أو

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

إلقاء نظرة هنا: http://www.howmvcworks.net/onviews/buildingastronglytypedview

أعتقد أنك تريد الأول.

حاول استخدام النوع الديناميكي مثل ViewBag

يمكنك الوصول إلى ViewBag في عرض الحلاقة

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top