Как использовать DISTINCT внутри представления MVC ? !
Вот такой вид :
@model Northwind.Employee @{ ViewBag.Title = "Details"; Layout = "~/Views/Shared/MasterDetailsLayoutPage.cshtml"; } <h2>Details</h2> <div> <h4>Employee</h4> <hr /> <dl class="dl-horizontal"> <dt> @Html.DisplayNameFor(model => model.LastName) </dt> <dd> @Html.DisplayFor(model => model.LastName) </dd> <dt> @Html.DisplayNameFor(model => model.FirstName) </dt> <dd> @Html.DisplayFor(model => model.FirstName) </dd> <dt> @Html.DisplayNameFor(model => model.Title) </dt> <dd> @Html.DisplayFor(model => model.Title) </dd> <dt> @Html.DisplayNameFor(model => model.TitleOfCourtesy) </dt> <dd> @Html.DisplayFor(model => model.TitleOfCourtesy) </dd> <dt> @Html.DisplayNameFor(model => model.BirthDate) </dt> <dd> @Html.DisplayFor(model => model.BirthDate) </dd> <dt> @Html.DisplayNameFor(model => model.HireDate) </dt> <dd> @Html.DisplayFor(model => model.HireDate) </dd> <dt> @Html.DisplayNameFor(model => model.Address) </dt> <dd> @Html.DisplayFor(model => model.Address) </dd> <dt> @Html.DisplayNameFor(model => model.City) </dt> <dd> @Html.DisplayFor(model => model.City) </dd> <dt> @Html.DisplayNameFor(model => model.Region) </dt> <dd> @Html.DisplayFor(model => model.Region) </dd> <dt> @Html.DisplayNameFor(model => model.PostalCode) </dt> <dd> @Html.DisplayFor(model => model.PostalCode) </dd> <dt> @Html.DisplayNameFor(model => model.Country) </dt> <dd> @Html.DisplayFor(model => model.Country) </dd> <dt> @Html.DisplayNameFor(model => model.HomePhone) </dt> <dd> @Html.DisplayFor(model => model.HomePhone) </dd> <dt> @Html.DisplayNameFor(model => model.Extension) </dt> <dd> @Html.DisplayFor(model => model.Extension) </dd> <dt> @Html.DisplayNameFor(model => model.Photo) </dt> <dd> @{ byte[] photo = Model.Photo; string imageSrc = "image / jpeg"; if (photo != null) { MemoryStream ms = new MemoryStream(); ms.Write(photo, 78, photo.Length - 78); string imageBase64 = Convert.ToBase64String(ms.ToArray()); imageSrc = string.Format("data:image/jpeg;base64,{0}", imageBase64); } } <img src="@imageSrc" alt="Image" width="50" height="50"/> </dd> <dt> @Html.DisplayNameFor(model => model.Notes) </dt> <dd> @Html.DisplayFor(model => model.Notes) </dd> <dt> @Html.DisplayNameFor(model => model.PhotoPath) </dt> <dd> @Html.DisplayFor(model => model.PhotoPath) </dd> <dt> @Html.DisplayNameFor(model => model.Employee1.LastName) </dt> <dd> @Html.DisplayFor(model => model.Employee1.LastName) </dd> </dl> </div> <h4>Customers</h4> <p> @Html.ActionLink("Create New Customer", "Create", "Customers", new { id = Model.EmployeeID }, null) </p> <table class="table"> <tr> <th> Customer ID </th> <th> Customer Name </th> <th></th> </tr> @foreach (var item in Model.Orders.Distinct<Order>()) { <tr> <td> @Html.DisplayFor(modelItem => item.CustomerID) </td> <td> @Html.DisplayFor(modelItem => item.Customer.ContactName) </td> <td> @Html.ActionLink("Editt ", "Edit", "Customers", new { id = item.CustomerID }, null) @Html.ActionLink("Detailss ", "Details", "Customers", new { id = item.CustomerID }, null) @Html.ActionLink("Deletee ", "Delete", "Customers", new { id = item.CustomerID }, null) @Html.ActionLink("Edit", "Edit", new { id = item.CustomerID }) | @Html.ActionLink("Details", "Details", new { id = item.CustomerID }) | @Html.ActionLink("Delete", "Delete", new { id = item.CustomerID }) </td> </tr> } </table> <p> @Html.ActionLink("Edit", "Edit", new { id = Model.EmployeeID }) | @Html.ActionLink("Back to List", "Index") </p>
А это контролер :
public ActionResult Details(int? id) { if (id == null) { return new HttpStatusCodeResult(HttpStatusCode.BadRequest); } Employee employee = db.Employees.Find(id); if (employee == null) { return HttpNotFound(); } return View(employee); }
То ,что я хочу, находится в разделе Клиенты в представлении, чтобы отобразить отдельных клиентов каждого сотрудника, но я не могу этого сделать , я не знаю, как:
@foreach (var item in Model.Orders.Distinct<Order>()) {
Что я уже пробовал:
Я только что объяснил эту проблему выше
CHill60
Конечно, именно в модели вы бы это сделали, или, на худой конец, в контроллере. Определенно не вид.
Измените запрос с вашего предыдущего вопроса на
Select DISTINCT E.LastName, E.FirstName, E.Title --,and some other employees fields FROM Orders O INNER JOIN Employees E ON O.EmployeeID = E.EmployeeID
ddgjgj
Сэр, но разве список клиентов тоже отображается таким образом, для каждого сотрудника, как вы думаете ,разве это не нормально?
куда теперь вставить этот запрос в контроллер ?
// GET: Employees / Details / 5
public ActionResult Details(int? id)
{
if (id = = null)
{
возврат нового HttpStatusCodeResult(HttpStatusCode. BadRequest);
}
Сотрудник = дБ.Сотрудников.Найти (id);
if (employee = = null)
{
return HttpNotFound();
}
обратный вид(сотрудник);
}
CHill60
1. Что запрос не отображать любую информацию поддержки.
2. Я тебе на твой предыдущий пост Запрос соединения между тремя таблицами[^] что запрос должен идти в Модель не контролер.
3. см. комментарий от F-ES Sitecore ниже.
4. Если вы отвечаете на комментарий, используйте Ответить кнопка, чтобы плакат был уведомлен о вашем ответе
ddgjgj
ЧТОБЫ ВСЕ БЫЛО ЯСНО, Я ТОЛЬКО ЧТО ОПУБЛИКОВАЛ ЗДЕСЬ НОВЫЙ ВОПРОС :
https://www.codeproject.com/Questions/1189186/Many-to-many-relationship-in-MVC-view
F-ES Sitecore
Чтобы немного пояснить то, что сказал CHill60, модель, которую вы используете (Сотрудник), не подходит для той цели, которую вы хотите использовать, поэтому вам нужно сделать что-то еще. Определите свой собственный класс модели, который имеет объект Employee, а также список объектов Customer (модель может быть сотрудником со списком в качестве его свойства, или модель может содержать как свойство Employee, так и свойство List
Mymodel model = new MyModel(id);
а конструктор MyModel получит соответствующего сотрудника из базы данных и соответствующим образом заполнит свойства так что ваше представление будет просто использовать
Модель.Работник
и
Модель.Клиенты
CHill60
Виртуальная 5
ddgjgj
ЧТОБЫ ВСЕ БЫЛО ЯСНО, Я ТОЛЬКО ЧТО ОПУБЛИКОВАЛ ЗДЕСЬ НОВЫЙ ВОПРОС :
https://www.codeproject.com/Questions/1189186/Many-to-many-relationship-in-MVC-view