【问题标题】:render partial view in MVC在 MVC 中渲染局部视图
【发布时间】:2013-05-07 10:05:14
【问题描述】:

我正在使用 MVC 结构。我必须创建一个可以通过下拉列表过滤的报告。我很喜欢使用局部视图来显示报告。 这是我想要实现的页面结构。 在页面顶部,会有一些下拉列表。 下面是报告页面。

当用户更改下拉列表中的选项时,报告将被过滤。

我有两个问题 1.如何渲染部分页面。 2.如何通过ajax/jquery刷新部分页面。我想在客户端执行此操作。

我在网上查了一下,我正在渲染页面,如下代码所示 查看

<h3>Report</h3>
<div>
    <table>
        <tr>
            <td>ServiceLine</td>
            <td>@Html.DropDownList("ServiceLine", null, new {id="ServiceLine"}) </td>
        </tr>
    </table>
</div>
<div>
    <h2>List</h2>
    <div>
        @Html.Partial("PartialView")
    </div>
</div>

这是我在控制器中得到的

public ActionResult PortfolioReport(char serviceLine)
{
    //Department List

     var serviceLines = Enum.GetValues(typeof(SogetiDepartments)).Cast<SogetiDepartments>().Select(v => new SelectListItem
    {
        Text = v.ToString(),
        Value = ((char)v).ToString(),
    });

     foreach (SelectListItem item in serviceLines)
     {
         if (Convert.ToChar(item.Value) == serviceLine)
             item.Selected = true;
     }


     ViewBag.ServiceLine = serviceLines;

    return View();
}

感谢任何形式的帮助。

【问题讨论】:

    标签: asp.net-mvc partial-views partialviews


    【解决方案1】:

    你必须使用jQuery来实现这个功能

    首先将一些标识符应用于您的数据容器

    <div id="reportContent">
            @Html.Partial("PartialView")
    </div>
    

    然后使用 jQuery 在您的下拉更改事件上编写脚本

    <script type="text/javascript">
    $(function(){
        $("#ServiceLine").change(function{
        // get data from server using ajax
        var url = 'YourPartialPageURL?'+serviceLine+="="+$(this).val();
        $('#reportContent').load(url);
      });
    
    });
    </script>
    

    注意:您应该在控制器操作中使用 return PartialView(); 并且不要使用@Html.Partial 而使用@Html.Action。 @Html.Partial 直接加载 View 而无需进入 Controller Action。 如果您有要传递的数据或者您只想在页面上加载一些静态内容,则应该使用它

    【讨论】:

    • 嗨,KD 到目前为止一切正常。我现在还有一个问题。那就是刷新。当我将参数作为查询字符串传递时,它可以转到控制器吗?因为数据来自控制器。在局部视图中,我只是渲染页面。
    • 如果你在页面加载时有数据,为什么你要传递一个查询字符串呢?如果您有数据,那么只需使用 Html.Partial() 将其传递给您的视图。如果您想在服务器上调用 Controller Action,则应使用 Html.Action
    • 感谢 K D 的帮助。代码现在运行良好。我稍后会为它放置解决方案。你的想法奏效了。 [竖起大拇指]
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多