使用局部视图来表示表格行

Gat*_*ign 11 partial-views razor asp.net-mvc-3

我试图使用局部视图来表示我的项目中的表行.我现在有

 <table> 
    <thead>
        <tr>
            <th >
                Column 1
            </th>
            <th >
                 Column 2
            </th>
            <th >
                 Column 3
            </th>
        </tr>
    </thead>
    <tbody>
         @foreach(var item in Model.Items)
         {
         @Html.Action("ItemCalculatedView", new { Id = item.Id}) 
         }
     </tbody>
     </table>
Run Code Online (Sandbox Code Playgroud)

在我看来,我有这个

@using (Ajax.BeginForm("SaveStuff", "Whatever",
    new { id = @Model.Id }, new AjaxOptions()
    {
        HttpMethod = "Post",
        OnSuccess = "Success"
    }))
   {
   @Html.HiddenFor(m => m.Id)
    <tr>
       <td>
          @Html.Label("Col1", Model.Col1)
       </td>
       <td>
          @Html.TextBox("Number", Model.Number)
       </td>
       <td>
          <input type="submit" id='submit-@Model.Id'/>
       </td>
     </tr>           
     }
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

McG*_*gle 8

您可以将表单放在表格单元格中,但不能将表单放在tbody元素中,也不能跨越多个列.所以有三种选择:

  1. 使用CSS布局而不是表格,或使用CSS显示设置为"table"的 div .(例如)
  2. 将整个表单(TextBox和Submit)放在一个 td
  3. td元素中放入另一个表

我建议#1 - 使用CSS布局来构造表格,因为table标签样式很难:

主要

<div class="table"> 
    <div class="header-row">
        <div class="header-cell">Column 1</th>
        <div class="header-cell">Column 2</th>
        <div class="header-cell">Column 3</th>
    </div>

     @foreach(var item in Model.Items)
     {
         @Html.Action("ItemCalculatedView", new { Id = item.Id}) 
     }
</div>
Run Code Online (Sandbox Code Playgroud)

局部

@using (Ajax.BeginForm(
  actionName: "SaveStuff", 
  controllerName: "Whatever",
  routeValues: new { id = @Model.Id }, 
  ajaxOptions: new AjaxOptions
  {
      HttpMethod = "Post",
      OnSuccess = "Success"
  },
  htmlAttributes: new { @class = "row" }
 ))
 {
   <div class="cell">
       @Html.HiddenFor(m => m.Id)
   </div>
   <div class="cell">
      @Html.Label("Col1", Model.Col1)
   </div>
   <div class="cell">
      @Html.TextBox("Number", Model.Number)
   </div>
   <div class="cell">
      <input type="submit" id='submit-@Model.Id'/>
   </div>
 }
Run Code Online (Sandbox Code Playgroud)

CSS

.table { display: table; }
.header-row, row { display: table-row; }
.header-cell, cell { display: table-cell; }
Run Code Online (Sandbox Code Playgroud)