Razor中的MVC2代码转换

时间:2010-12-18 09:48:26

标签: asp.net-mvc-2 asp.net-mvc-3 razor

我正在使用someones代码进行分页。他的代码在MVC 2中,我希望它在MVC3 Razor中。问题在于语法。

下面是mvc中的代码需要有人来修改razor的语法。

问题出在这一行

IList<Customer> customers = (IList<Customer>)Model.Data;

//不能直接使用Model.Data。不接受通用类型。

IList<Customer> customers = (IList<Customer>)Model.Data;
  foreach (Customer item in customers) { %>
<tr onclick="onRowClick(<%= item.ID %>)">
  <td>
    <%= Html.ActionLink("Edit", "Edit", new { id=item.ID}) %> |
    <%= Html.ActionLink("Delete", "Delete", new { id=item.ID })%>
  </td>

  <td>
    <%= Html.Encode(item.ID) %>
  </td>

  <td>
    <%= Html.Encode(item.FirstName) %>
  </td>
</tr>
<% } %>

1 个答案:

答案 0 :(得分:2)

该行可以这样翻译:

@ {
    IList<Customer> customers = (IList<Customer>)Model.Data;
}

然后:

@foreach (Customer item in customers) {
    <tr onclick="onRowClick(@item.ID)">
        <td>
            @Html.ActionLink("Edit", "Edit", new { id = item.ID })
            @:|
            @Html.ActionLink("Delete", "Delete", new { id = item.ID })
        </td>

        <td>
            @item.ID
        </td>

        <td>
            @item.FirstName
        </td>
    </tr>
}

我也会从此迁移中受益以改进此代码。目前,您在视图中使用的循环很难看,可以用显示模板替换。

所以,在你的主视图中:

@Html.DisplayFor(x => x.Data)

~/Views/Home/DisplayTemplates/Customer.cshtml

@model YourApp.Models.Customer
<tr onclick="onRowClick(@Model.ID)">
    <td>
        @Html.ActionLink("Edit", "Edit", new { id = Model.ID })
        @:|
        @Html.ActionLink("Delete", "Delete", new { id = Model.ID })
    </td>
    <td>
        @Model.ID
    </td>
    <td>
        @Model.FirstName
    </td>
</tr>