asp.net Repeater Databind代码在MVC5中落后

时间:2015-09-30 18:31:07

标签: repeater

我有一个用asp.net web表单编写的代码,里面有很多转发器Databind,我正在尝试使用Repository Patterns将其重写为MVC 5 EF 6。我知道我不能在MVC中使用转发器,但是如何在MVC中重写下面的代码

private void GroupList(Repeater rpt,int DtID,int GroupID,string conNumber,string conName)         {             尝试             {

attempttoclassify

1 个答案:

答案 0 :(得分:1)

如果您的list变量将包含您需要的数据,那么您可能会在控制器中获取该数据。然后,您将添加到模型中。它可能看起来像这样:

public ActionResult SomeAction()
{
    var list = data.List<CtItem>
                   .Where(c.CNumber == conNumber && c.Name == conName)
                   .OrderBy(o => o.CNumber);
    return View(list);
}

在这种情况下,list的数据类型将 您视图的模型。如果还有其他数据需要转到视图,那么它可能只是自定义视图模型上的属性。像这样:

public ActionResult SomeAction()
{
    var list = data.List<CtItem>
                   .Where(c.CNumber == conNumber && c.Name == conName)
                   .OrderBy(o => o.CNumber);
    var viewModel = new SomeViewModel();
    viewModel.SomeProperty = list;
    // set other values on the view model
    return View(viewModel);
}

然后在您的视图中,您将根据模型上的值构建标记。据推测,您的网格正在生成某种<table>。因此构造输出可能如下所示:

<table>
  <tr>
    <th>Column Heading</th>
  </tr>
  @foreach (var item in Model.SomeProperty)
  {
    <th>
      <td>@item.SomeColumnValue</td>
    </th>
  }
</table>

当然,这只有一列。无论您的结构需要什么,您都可以进行扩展。您还可以从元数据等中获取列标题。您可以 添加许多复杂性。但总的问题是,您尝试做的事情是从数据源获取数据,将其发送到视图,并在视图中显示。