【问题标题】:Passing DataTable from controller to PartialView将 DataTable 从控制器传递到 PartialView
【发布时间】:2015-03-07 01:04:47
【问题描述】:

我正在寻找一种使用Controller 操作将DataTable 传递给PartialView 的方法。或者,如果您知道更好的方法,我愿意接受建议。

控制器:

public DataTable GetDailyOutput()
{
    Graph g = repository.Graphs.Where(p => p.GraphID == 2).FirstOrDefault();
    DataTable dt = repository.GetGraphData(g.StoredProc);
    return dt;
}

查看:

<div id="dvCategoryResults">
    @{Html.Partial("_GetDailyOutput", Html.Action("GetDailyOutput", "Graph"));}
</div>

局部视图:

@model System.Data.DataTable
@using System.Data
<table>
    <thead>
        <tr>
            @foreach (DataColumn col in Model.Columns)
            {
                <th>
                    @col.ColumnName
                </th>
            }
        </tr>
    </thead>
    <tbody>
       @foreach (DataRow row in Model.Rows)
       {
           <tr>
               @foreach (DataColumn col in Model.Columns)
               {
                    <td>
                        @row[col.ColumnName]
                    </td>
               }
            </tr>
        }
    </tbody>
</table>

我的下一步是使用 Ajax 调用更新表并刷新 PartialView

【问题讨论】:

    标签: asp.net-mvc


    【解决方案1】:

    您可能需要为此使用 AJAX。您可以将下面的代码放在事件处理程序中,例如按钮单击的处理程序。

    使用 JQuery $.post() 的 AJAX 示例:

    $.post('@Url.Content("~/Graph/_GetDailyOutput")', function( data ) {
        $( "#dvCategoryResults" ).html( data );
    });
    

    控制器动作:

    public PartialViewResult _GetDailyOutput()
    {
        Graph g = repository.Graphs.Where(p => p.GraphID == 2).FirstOrDefault();
        DataTable dt = repository.GetGraphData(g.StoredProc);
        return PartialView(dt);
    }
    

    如果您愿意,您可以在不使用 JavaScript 的情况下通过执行初始渲染部分视图

    <div id="dvCategoryResults">
            @Html.Action("_GetDailyOutput", "Graph")
    </div>
    

    【讨论】:

    • PartialView 不能被 intellisense 识别,你的意思是 PartialViewResult 吗?这给我一个错误:执行处理程序'System.Web.Mvc.HttpHandlerUtil+ServerExecuteHttpHandlerAsyncWrapper'的子请求时出错。
    • 究竟是什么引发了这个错误? @Html.Action?
    • 是的@Html.Action,但是_GetDailyOutput已经完成了
    • 啊。在这种情况下,请在页面加载时调用您的 ajax。
    • 对不起,我误会你了,我还没有使用Ajax,只有Action
    猜你喜欢
    • 1970-01-01
    • 2018-06-10
    • 2021-12-05
    • 1970-01-01
    • 1970-01-01
    • 2018-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多