2013-05-07 129 views
3

我正在使用MVC结构。我必须创建一个可以通过下拉式过滤的报告。我是使用局部视图来显示报告的东西。 HEre是我想要实现的页面的结构。 在页面顶部,会有一些下拉列表。 下面这些将是报告的页面。在MVC中渲染部分视图

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

我有两个问题 1.如何渲染局部页面。 2.如何通过ajax/jquery刷新部分页面。我想在客户端做到这一点。

我已经在网上查了,我的渲染页面,如在下面的代码 VIEW

<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(); 
} 

任何形式的帮助表示赞赏。

回答

6

你必须使用jQuery来实现该功能

首先应用一些识别到你的数据容器

,然后使用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加载直接查看而不用去控制器操作。 它应该使用,如果你有数据要传递给你,或者你只是想加载页面上的一些静态内容

+0

嗨KD 到目前为止它工作正常。 我现在还有一个问题。这是刷新。当我将参数作为查询字符串传递时,它可以发送给Controller吗?因为数据来自控制器,所以请拨打 。在局部视图中,我只是渲染页面。 – Developer 2013-05-07 11:15:04

+0

如果你在页面加载时有数据为什么你传递一个查询字符串呢?如果你有数据,然后通过Html.Partial()传递给你的视图。如果你想在服务器上调用Controller Action,应该使用Html.Action – 2013-05-07 11:41:40

+0

感谢您的帮助K D.代码工作正常现在。我将在稍后提供解决方案。你的想法奏效了。 [THUMBS UP] – Developer 2013-05-07 12:00:30