C# 在MVC4中通过ViewBag/ViewData将列表移动到视图并从中进行选择

C# 在MVC4中通过ViewBag/ViewData将列表移动到视图并从中进行选择,c#,asp.net-mvc-4,razor,C#,Asp.net Mvc 4,Razor,我正在重构别人用ASP.NETMVC4Razor编写的应用程序。[.NET不是我的专长-我主要从事C/C++]。他不是以MVC规范的方式访问数据库。他为每个表使用一个Repository类在SQLServer上执行所有SQL命令,而不是让基本实体框架来完成繁重的工作。应用程序必须: 从控制器读取表中的行列表,他有一个表的模型 将此模型对象列表返回到视图ViewBag或ViewData将是最简单的 在视图的表或列表中插入列表成员 从列表中选择一行表示,将所选行返回控制器ActionResult-

我正在重构别人用ASP.NETMVC4Razor编写的应用程序。[.NET不是我的专长-我主要从事C/C++]。他不是以MVC规范的方式访问数据库。他为每个表使用一个Repository类在SQLServer上执行所有SQL命令,而不是让基本实体框架来完成繁重的工作。应用程序必须:

从控制器读取表中的行列表,他有一个表的模型

将此模型对象列表返回到视图ViewBag或ViewData将是最简单的

在视图的表或列表中插入列表成员

从列表中选择一行表示,将所选行返回控制器ActionResult-模型类中的一个表记录

在控制器调用的存储库类部分代码中:

public List<Note> GetNotesByWorkGroup(string workGroup)
{
  List<Note> notes = new List<Note>;
  string sql = "SELECT * FROM tblNotes where WorkGroup = 'Foo';
  SqlCommand sqlCmd = new SqlCommand(sql, conn);
  SqlDataReader myReader = sqlCmd.ExecuteReader();
  if (myReader.HasRows)
  {
    while (myReader.Read())
    {
      Note note = new Note();
      note.NoteId = myReader.GetInt32(NoteIdOrdinal);
      note.DateTime = myReader.GetDateTime(DateTimeOrdinal);
      note.WrittenBy = myReader.GetString(WrittenByOrdinal);
      notes.Add(note);
    }
  }
  return notes;
}
然后javascript函数可以在单击时接收Id并将其提交给控制器ActionResult

我只需要一个视图代码MVC4,C,Razor的示例,显示ViewData[myList]是如何从C解引用到HTML并插入到列表或表中的行中的。另外,如何在传递parm的javascript函数中编写submit


对视图有什么建议和示例吗?

我的第一个建议是从控制器返回注释,而不是设置视图数据

否则,您应该能够像访问数组一样访问ViewData[myList]。ViewData[myList][0]。属性名称


如果我能找到一些示例代码,我希望能有所帮助,我将更新这篇文章。

您可以使用ViewModel、ViewBag或ViewData方法执行此任务

视图模型

ViewBag或ViewData 您可以创建一个表,然后遍历所有数据

<table>
<tr>
<td>date</td>
<td>writtenby</td>
</tr>
    @foreach (var item in ViewData["myList"])
           {
    <tr>
    <td>@item.date</td>
    <td>@item.writtenby</td>
    </tr>
          } 
</table>

尝试一下,希望能有所帮助。谢谢这里,item将是Note的一个实例,而不是Html.ActionLink第一个参数所需的字符串。请使用item.date1而不是item记住,我通常不是C/ASP.NET编码员。我是否通过调用Viewnotes返回它?我必须投吗?视图是否自动具有对注释列表的访问权限,或者我是否也必须在视图中强制转换注释列表?若能提供代码片段,将不胜感激。
Date1  WrittenBy  
Date2  WrittenBy
Date3  WrittenBy
foreach (var item in Model.myList)
       { }
<table>
<tr>
<td>date</td>
<td>writtenby</td>
</tr>
    @foreach (var item in ViewData["myList"])
           {
    <tr>
    <td>@item.date</td>
    <td>@item.writtenby</td>
    </tr>
          } 
</table>
 @{ 
      List<Note> _list = ViewData["myList"] as List<Note>;
   }
    @if (_list != null)
    {
        foreach (var item in _list)
        {
            @Html.ActionLink(item, "Index");
        }
    }