System.NullReferenceException与DataViewModel上的Foreach

时间:2019-07-08 08:20:24

标签: c# asp.net-mvc razor

我在.Net Framework中开发了一个Web应用程序,允许创建客户端,联系人等...在客户端和联系人之间的联系人上有外键。 (为简化起见,您可以将客户视为公司,而可以将其视为员工)

我发展了看法以创建新的联系人,但我遇到了错误。 我使用DataViewModel加载视图中的所有客户(公司)。在此之前,我的下拉列表与所有客户均已加载。 但是,当我想保存新联系人(员工)时,我的客户(公司)下拉列表中出现错误。

error:System.NullReferenceException:'对象引用未定义为对象的实例。' 此错误与“ Model.Clients”有关。

感谢您的帮助。

我的创建视图的代码

                <div class="row">
                    <div class="col s12 m6 l3">
                        <label class="control-label">Client</label>
                        <div class="styled-select">
                            <select id="idClient" name ="idClient" single>
                                <option value="" disabled selected>Selectionner la socièté du contact</option>
              Problem here --->  @foreach (var client in Model.Clients) <----
                                {
                                    <option value="@client.ClientID">@client.Name</option>
                                }
                            </select>
                        </div>
                    </div>
                </div>

我用来加载所有客户端的数据视图模型。

    namespace CameraVolta.DAL.Models.ViewModels
    {
        public class ContactViewModel
        {
            public Contact Contact { get; set; }
            public IQueryable<Client> Clients { get; set; }
        }
    }

我的控制器

    public ContactViewModel LoadViewModel()
    {
        var clientRepository = new ClientRepository();
        var contactViewModel = new ContactViewModel
        {
        Clients = clientRepository.GetAll("", "")
        };
        return contactViewModel;
    }

    // POST : Client
    public ActionResult Create()
    {
        var contactViewModel = LoadViewModel();
        return View(contactViewModel);
    }

    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Create(ContactViewModel contactViewModel, int? idClient)
    {
        try
        {
        if (ModelState.IsValid)
        {
            contactViewModel.Contact.ClientID = idClient;
            contactRepository.Insert(contactViewModel.Contact);
            return RedirectToAction("Index");
        }
        }
        catch (DataException)
        {
        ModelState.AddModelError("", "Unable to save changes. Try again, and if the problem persists see your system administrator.");
        }
        return View(contactViewModel);

    }

0 个答案:

没有答案