MVC3 Razor слабо типизированный вид? - PullRequest
1 голос
/ 21 сентября 2011

Я знаю, что этот звук несколько не в духе, но как бы вы создали представление со слабой типизацией, в котором вы передаете коллекцию объектов, перебираете бритву и отображаете ее в таблице?

- Вид контроллера -- ???

- Razor View ---

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

Ответы [ 4 ]

2 голосов
/ 01 июля 2013

фрист вы знаете данные отправляете Из контроллера -------> просмотр в двух направлениях

  1. По слабому виду
  2. и в строгом представлении типа

нет другого способа передачи данных из контроллера для просмотра ... (помните)

что такое intelliscence ----> которые показывают связанное вспомогательное свойство любой модели как мы пишем Model. --------> тогда все свойства отображаются в выпадающий список после точки (.).

А. Что такое слабое представление типа

  1. Это используется без использования модели, т.е. как использование ViewBag и др.
  2. Для этого типа представлений нет смысла, и это сложно, и когда вы пишете любое имя, которое не существует, то оно дает ошибка времени выполнения .

Ex.

        .............Controller

   ViewBag.List = List<job>;
   return View();

        .............Razor View
   @foreach(var item in ViewBag.List)
   {
      // when you write no intellisence and you want to write your own correct one...
         @item.

   }

B. Какой сильно тип просмотра

  1. это используемая модель для отправки данных с контроллера для просмотра наоборот.
  2. Модель строго типизирована для просмотра, поэтому она показывает интеллигентность и когда вы пишите неправильно тогда есть только ошибка, показанная в время компиляции ..

Ex.

        .................Controller

         List<job> jobdata =new List<job>();
         return View(jobdata);

         ................view

         //Mention here datatype that you want to strongly type using **@model**
         @model List<job>

         @foreach(var item in Model) 
         //this **Model** represent the model that passed from controller 
         // default you not change
         {
             @item.      //then intellisence is come and no need write own .... 
         }

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

Но лучше всего использовать строго типизированное представление, чтобы оно стало легким использовать и лучше всего сравнивать со слабыми ...

0 голосов
/ 21 сентября 2011
@model dynamic

Буду делать, что хочешь, я верю.

Если это будет коллекция, то, возможно, используйте

@model ICollection
0 голосов
/ 31 августа 2012

Хорошо, я опоздал на вечеринку, которую я знаю, но то, что вы ищете, это представление о "@model dynamic", как уже говорилось.

Рабочий пример: (в mvc3 на момент публикации)

NB. В моем случае ниже представлению фактически передается System.Collections.IEnumerable. Поскольку он слабо напечатан, вы не получите intelesense для таких элементов, как @ item.Category и т. Д.

@model dynamic

@using (Html.BeginForm())
{    
<table class="tableRowHover">
    <thead>
        <tr>
            <th>Row</th>
            <th>Category</th>
            <th>Description</th>
            <th>Sales Price</th>
        </tr>
    </thead>

    @{int counter = 1;}

    @foreach (var item in Model)
    {
        <tbody>
        <tr>
            <td>
                @Html.Raw(counter.ToString())
            </td>
            <td>
                @item.Category    
            </td>
            <td>
                @item.Description
            </td>
            <td>
                @item.Price
            </td>
        </tr>
        @{ counter = counter +1;}

        </tbody>
    }

    </table>
}

Редактировать: удалены некоторые CSS

0 голосов
/ 21 сентября 2011

Это не слабо напечатано. Он напечатан в какой-то коллекции.

@model IEnumerable<MyClass>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...