MVC3 Razor弱视型?

时间:2011-09-21 03:09:19

标签: asp.net-mvc-3 razor

我知道这听起来有点偏离滑雪道,但是你会如何创建一个弱类型的视图,你传入一组对象并相应地在剃刀中迭代并显示在一个表中?

- 控制器视图 - ???

- Razor View ---

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

4 个答案:

答案 0 :(得分:2)

首先你知道发送的数据 来自Controller -------&gt;通过双向观察

  1. 通过弱类型视图
  2. 并通过强类型视图
  3. 没有其他方法可以将数据从控制器传递到视图...(请记住)

    什么是intelliscence ----&gt;显示任何模型的相关子属性                              就像我们写模型。 --------&gt;然后所有的财产显示在                              点(。)后的重组列表。

    A.什么是弱类型视图

    1. 不使用模型即使用ViewBag等。
    2. 对于这种类型的视图没有智慧,它很复杂,当你写作时 任何不存在的名称,然后它在运行时错误
    3. 实施例

              .............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. 模型是强类型的,因此,它显示出智慧,当你写错了 然后只有编译时 ..
      3. 的错误显示

        实施例。

                .................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 .... 
                 }
        
        那是弱而强的类型观点...... 所以现在你解决这个基本的任何问题..... 我希望它可以帮助你......

        但最好使用强类型视图,以便变得容易  使用和最好的比较弱...

答案 1 :(得分:0)

它不是弱类型的。它被打印成某种类型的集合。

@model IEnumerable<MyClass>

答案 2 :(得分:0)

@model dynamic

我相信会做你想做的事。

如果它将成为一个集合,那么可以使用

@model ICollection

答案 3 :(得分:0)

好的,我知道的派对迟到了,但你所说的是一个说明“@model dynamic”的观点,如前所述。

工作示例:(在发布时的mvc3中)

NB在下面的例子中,视图实际上是传递给System.Collections.IEnumerable 因为它是弱类型的,所以你不会为@ item.Category等项目获得intelesense。

@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