如何在同一视图上使用webgrid和html helper方法

时间:2012-06-23 04:14:11

标签: asp.net-mvc-3

在asp.net mvc3项目中,我使用ienumerable视图来显示webgrid中的对象集合。在同一视图中我使用html辅助方法来创建对象。我在帮助方法中遇到错误“System.collection.generic.ienumerable< ...>不包含< ...>”的定义

@model IEnumerable<TRADEBLOTTER_MVCPOC.Models.Trader />
@{
   ViewBag.Title = "NewTrader";
}

@{
      var grid = new WebGrid(source: Model, 
                             defaultSort: "TradeID",
                             rowsPerPage: 5, fieldNamePrefix: "wg_",
                             canPage: true, canSort: true,
                             pageFieldName: "pg", sortFieldName: "srt" );  
}

<h2>NewTrader</h2>
@using (Html.BeginForm(FormMethod.Post))
{
@Html.ValidationSummary()
<table cellpadding="0" cellspacing="0" width="100%">
   <tr>
      <td>
         @Html.LabelFor(t=>t.TraderName,"Trader Name")
      </td>
      <td>
         @Html.TextBoxFor(t=>t.TraderName)
      </td>
   </tr>
   <tr>
      <td>
      </td>
      <td>
         <input type="submit" value="Submit Trader" />
      </td>
   </tr>
</table>
}

2 个答案:

答案 0 :(得分:0)

我认为通常你会在变量上面的模型中使用类似的东西

[DisplayName("Trader Name")]
public string TraderName { get; set; }

然后是你的观点

<h2>NewTrader</h2>
@using (Html.BeginForm(FormMethod.Post))
{
@Html.ValidationSummary()
<table cellpadding="0" cellspacing="0" width="100%">
   <tr>
      <td>
         @Html.LabelFor(t=>t.TraderName)
      </td>
      <td>
         @Html.TextBoxFor(t=>t.TraderName)
      </td>
   </tr>
   <tr>
      <td>
      </td>
      <td>
         <input type="submit" value="Submit Trader" />
      </td>
   </tr>
</table>
}

答案 1 :(得分:0)

我的建议:使用网格的部分页面(使用IEnumerable版本的模型)和单个变量的另一个部分页面(使用单个模型)。

如果网格仅显示信息,而不是编辑任何内容,则将网格绑定到模型中定义的方法 - 然后视图不需要具有IEnumberable模型。