【问题标题】:Displaying a Table of Database Data in MVC在 MVC 中显示数据库数据表
【发布时间】:2009-01-05 15:19:29
【问题描述】:

更改解决方案:我正在尝试显示一个 html 数据表。在我的控制器中,我将一个对象作为 null 开始,然后将该对象作为引用传递,以根据数据库中的信息更新对象,如下所示“用户控件命名(Indexcontrol.ascx)":

        List<dataob> data = null;
        dataManager target = new dataManager();
        //pass the parameter to a stored procedure and update it
        target.LoadFromDatabase(ref data);
        this.ViewData.Model =data;
        return View("Index");

我正在尝试使用类似的路径查看数据对象中的信息后如何显示表格,所有这些都在用户控件中

 <tbody >

<% foreach (businesslayer.dataob m in  ViewData.Model) 
{ %>
<tr>
 <td><%= m.ID%></td>
 <td><%= m.Date %></td>
 <td><%= m.Description %></td>
 </tr>
 <% } %>


</tbody>

我发现了问题....因为我将表属性设置为 runat=server 这就是给我错误的原因..不知道为什么但确实如此

【问题讨论】:

    标签: c# asp.net-mvc model-view-controller


    【解决方案1】:

    我不确定您为什么要避免使用 ViewData.Model。在这种情况下,我没有理由看到,为什么:

     ViewData["data"] = data;
    

    最好是

     ViewData.Model = data;
    

    如果您使用强类型的视图页面,那么您也可以避免强制转换模型。然后你可以简单地这样做:

     <% foreach (dataob m in ViewData.Model) { %>
        <tr> 
            <td><%= m.Id %></td>
            <td><%= m.user %></td>
            <td><%= m.Date %></td>
        </tr>
     <% } %>
    

    【讨论】:

    • 这就是我自己做的方式,没有使用 ViewData.Model 的看似不合理的恐惧
    • “恐惧”来自他问题的最后一句话。他需要使用强类型模型。
    • 我这样做了,它可以工作,但现在我正在尝试将它集成到用户控件中,但它不会工作
    • 你的用户控件也是强类型的吗?
    • 是的,它是强类型的..你的意思是在后面的代码中正确吗?公共部分类数据控件:System.Web.Mvc.ViewUserControl>
    【解决方案2】:

    试试:

    <% foreach (dataob m in (IEnumerable<dataob>) ViewData["data"]) { %>
    

    【讨论】:

    • 显示语法错误,指出找不到类型或命名空间名称“dataob”。但我导入的类与我在控制器中导入的类相同?
    • 您可能需要在 web.config 中导入 dataobj 的命名空间?我只能猜测没有看到整个项目。
    • 在视图中使用
    • 注意:如果您使用我在回答中建议的强类型视图,我认为这不是必需的。
    猜你喜欢
    • 1970-01-01
    • 2012-08-30
    • 2019-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-13
    • 2016-08-03
    相关资源
    最近更新 更多