Я пытаюсь вернуть список клиентов в строго типизированное представление, используя viewbag, и у меня возникли некоторые трудности, так как я новичок в MVC и Razor. Может ли кто-нибудь любезно дать совет по следующей проблеме, пожалуйста?
У меня есть следующий код в моем контроллере,
public ViewResult Index()
{
var q = from a in db.Customers
select a;
ViewBag.customer = q;
return View(db.CustomerSites.ToList());
}
и этот код на мой взгляд
@foreach (var customer in Model)
{
<tr>
<td>
@ViewBag.customer.CustomerName
<td>
<td>
@customer.UnitNo
</td>
<td>
@Truncate(customer.StreetName, 25)
</td>
<td>
@Html.ActionLink("Edit", "Edit", new { id=customer.Id }) |
@Html.ActionLink("Details", "Details", new { id=customer.Id }) |
@Html.ActionLink("Delete", "Delete", new { id=customer.Id })
</td>
</tr>
}
Итак, я получаю список клиентов и сайтов клиентов, сайты набраны
@model IEnumerable<trsDatabase.Models.CustomerSite>
Я пытаюсь извлечь CustomerName из списка клиентов, используя
@ViewBag.customer.CustomerName
Но это приводит к ошибке, говорящей, что тип "Customer" не содержит определения дляимя клиента, но оно соответствует указанному ниже, поэтому я не уверен, почему происходит ошибка.
namespace trsDatabase.Models
{
public class Customer
{
[ScaffoldColumn(false)]
public int Id { get; set; }
[StringLength(50), Required(ErrorMessage = "Customer name required, please enter a customer name")]
public string CustomerName { get; set; }
[DisplayName("Contact Name")]
[StringLength(50), Required(ErrorMessage = "Primary contact name required, please enter a contact name")]
public string PrimaryContactName { get; set; }
[DisplayName("Secondary Contact")]
public string SecondaryContactName { get; set; }
[DisplayName("Email")]
[StringLength(50), Required(ErrorMessage = "Primary email address is required please enter an email address")]
public string PrimaryEmailAddress { get; set; }
[DisplayName("Secondary Email")]
public string SecondaryEmailAddress { get; set; }
[ScaffoldColumn(false)]
public DateTime RegisteredDate { get; set; }
[DisplayName("Contact No")]
public string PrimaryContactNo { get; set; }
[DisplayName("Secondary Contact No")]
public string SecondaryContactNo { get; set; }
[DisplayName("Waste Carrier Ref")]
public string WasteCarrierRef { get; set; }
[DisplayName("Unit No")]
public string UnitNo { get; set; }
[DisplayName("Street Name")]
[StringLength(50), Required(ErrorMessage = "Street name required, please enter a street name ")]
public string StreetName { get; set; }
[StringLength(50), Required(ErrorMessage = "Town required, please enter a town")]
public string Town { get; set; }
[StringLength(50), Required(ErrorMessage = "County is required, please enter a county")]
public string County { get; set; }
[StringLength(10), Required(ErrorMessage = "Postcode is required, please enter a postcode")]
public string Postcode { get; set; }
public List<CustomerSite> CustomerSites { get; set; }
}
}
Обновление:
Я все еще не могу получить это, чтобы сделать то, что мне нужно, я создалмодель основного вида, которая включает
public IEnumerable <Customer> SomeCustomer { get; set; }
public IEnumerable <CustomerSite> CustomerSites { get; set; }
Тогда, на мой взгляд,
@model IEnumerable<trsDatabase.Models.masterViewModel>
Если я попытаюсь получить доступ к модели, набрав, используя для каждого
@foreach (var customer in Model)
Когда я набираю @customer.Это позволит мне получить доступ только к двум спискам, а не к отдельным свойствам в списке.
Я думал, что смогу сделать это, например, с помощью @ customer.CustomerSites.UnitNo
Но самый дальнийЯ могу пойти, это @ customer.CustomerSites
У вас есть какие-либо идеи о том, что я делаю здесь неправильно?