MVC 3 ViewModel Pattern проблема (с помощью RAZOR) - PullRequest
2 голосов
/ 08 апреля 2011

Я исследовал эту проблему и не могу найти решение.Моя проблема в том, что, на мой взгляд, я не могу просмотреть свойства моего ViewModel (например, Model.Supplier.SupplerName).Intellisense разрешит мне использовать только Model.Suppliers, Model.ToolTypes или Model.ToolTypesSuppliers.Я не могу получить свойства каждой из этих моделей, которые я включил в ViewModel.

ViewModel:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace ToolOrder.Models
{
    public class ToolTypeSupplierViewModel
    {
        public ToolTypeSupplierViewModel(IEnumerable<ToolType> tooltypes, IEnumerable<Supplier> suppliers, IEnumerable<ToolTypeSupplier> tooltypesuppliers)
        {
            this.ToolTypes = tooltypes;
            this.Suppliers = suppliers;
            this.ToolTypeSuppliers = tooltypesuppliers;
        }

        public IEnumerable<ToolType> ToolTypes { get; private set; }
        public IEnumerable<Supplier> Suppliers { get; private set; }
        public IEnumerable<ToolTypeSupplier> ToolTypeSuppliers { get; private set; }

    }
}

Контроллер:

public ActionResult ListToolTypeSupplierOptions()
{
    var _tooltypelist =_repository.FetchAllToolTypeOptions();
    var _supplierlist = _repository.FetchAllSupplierOptions();
    var _toolstypesupplierlist = _repository.FetchAllToolTypeSupplierOptions();

    return View(new ToolTypeSupplierViewModel(_tooltypelist, _supplierlist, _toolstypesupplierlist));
}

Просмотр:

@model IEnumerable<ToolOrder.Models.ToolTypeSupplierViewModel>


<table>
    <tr>
        <th>Supplier</th>
        <th>Tool TYpe</th>
        <th>Created</th>
        <th>Last Modified </th>
    </tr>

@foreach (var item in Model.) {
    <tr>
        <td>
        </td>
    </tr>
}

</table>

Буду признателен за любую помощь или, если понадобятся какие-либо дополнительные разъяснения, я могу последовать.Я прошу прощения, если это несколько расплывчато, я пытался выяснить, почему я не могу получить свойства каждой Модели, которые я включил в свою ViewModel.Заранее спасибо.

Ответы [ 3 ]

4 голосов
/ 08 апреля 2011

Попробуйте это:

@foreach (var item in Model) {
  @foreach (var supplier in item.Suppliers){
    <tr>
        <td>
           @supplier.SupplierName
        </td>
    </tr>
  }
}

Кажется, вам нужно перебрать поставщиков, это IEnumerable.

1 голос
/ 08 апреля 2011

Ваш вопрос каким-то образом вводит в заблуждение, поэтому я попытаюсь ответить на оба случая.

  1. Как я вижу, вы передаете один экземпляр ToolTypeSupplierViewModel в ваше представление из контроллера, а не для перечисления.Если это не ошибка, то, по вашему мнению, ошибка - модель должна быть не IEnumerable из ToolTypeSupplierViewModel, а одиночной ToolTypeSupplierViewModel.В этом случае вы можете выполнить итерации по Model.ToolTypes, Suppliers и т. Д. Непосредственно
  2. Если ошибка не видна, а в контроллере и модели должен иметь тип IEnumerable<ToolTypeSupplierViewModel>, то сначала вы должны выполнить итерациюМодель напрямую, так как она сама по себе Enumerable.Его предметы ToolTypeSupplierViewModel.В этом случае код будет соответствовать предложенному ysrb
0 голосов
/ 08 апреля 2011

Попробуйте @using ToolOrder.Models вверху файла Razor.

или в файле web.config, найдите раздел пространств имен и добавьте его туда

  <namespaces>
    ...
    <add namespace="ToolOrder.Models" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...