我在.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);
}