C# MVC System.Web.Mvc.WebViewPage<TModel>.Model.get 返回 null

时间:2021-01-11 15:46:04

标签: c# model-view-controller

我遇到了一个奇怪的问题。我有一个从控制器填充的表格中的国家/地区下拉列表。

public ActionResult Add(Guid id)
    {
        try
        {

            GeneralEntities generalEntities = new GeneralEntities();
            List<SelectListItem> Country = new List<SelectListItem>();
            AddAddressViewModel casModel = AddAddressViewModel.GetCompanyId(id, db);
            List<Countries> Acountry = generalEntities.Countries.ToList();
            Acountry.ForEach(x =>
            {
                Country.Add(new SelectListItem { Text = x.CountryName, Value = x.CountryId.ToString() });
            });
            casModel.Countries = Country;

            return View(casModel);
        }
        catch (Exception)
        {

            return View();
        }
    }

选择添加视图以向帐户添加地址。我创建了一个新帐户,然后去添加一个地址,它给了我国家列表的错误。我在控制器和模型中设置断点并获得国家/地区列表。但是视图错误地认为列表为空。

当我在现有帐户上选择此选项时,没有问题,它会出现。这已经工作了很长时间。我不确定发生了什么变化。

添加帐户只会在数据库中添加一条记录,其中包含名称,当然还有 Id 和 UID,我使用的是确实存在的 UID。国家表与帐户无关。添加视图只显示国家、州、城市的列表。除了国家之外,相互依赖的人口是独立的。如果我注释掉视图中国家/地区的下拉菜单,页面将加载。

关于它为什么这样做的任何想法? 任何帮助将不胜感激。

更新:

我发现了我的问题或导致问题的原因。我仍然对为什么它会导致独立列表无法填充感到困惑。我的 ViewModel 在列出地址的 SQLView 表上有一个连接。我假设由于此表中没有与新帐户相关的地址,因此它出错了。为什么它在国家列表上出错,我不知道。下面是我指向的 ViewModel。

public class AddAddressViewModel
{
    public static AddAddressViewModel GetCompanyId(Guid id, GeneralEntities db)
    {
        var qCust = from ad in db.Addresses

                    join adv in db.AddressView on ad.AddressId equals adv.AddressId
                    join cus in db.CompanyNames on ad.CompanyId equals cus.CompanyId
                    where (adv.CompanyUI == id)
                    select new AddAddressViewModel()
                    {
                        CompanyUI = adv.CompanyUI,
                        CompanyId = cus.CompanyId
                    };

        var result = qCust.SingleOrDefault();

        return result;
    }

 XXXX-- Enitities List --XXXX
}

我创建了另一个 ViewModel,现在指向:

public class AddAddressesViewModel
{
    public static AddAddressesViewModel GetCompanyId(Guid id, GeneralEntities db)
    {
        var qCust = from ad in db.CompanyNames

                    join cus in db.CompanyNames on ad.CompanyUI equals cus.CompanyUI
                    where (cus.CompanyUI == id)
                    select new AddAddressesViewModel()
                    {
                        CompanyId = cus.CompanyId,
                        CompanyUI = cus.CompanyUI
                    };

        var result = qCust.SingleOrDefault();

        return result;
    }

  XXX-- Entities --XXX
}

这在地址中没有显示,但似乎有效。

如果有人能告诉我为什么这与单独的国家/地区列表有关,我将不胜感激。

我也不知道为什么这个 ViewModel 会连接到自己,我不是创建它的人。

0 个答案:

没有答案