用法一:ajax加载局部刷新
1. 新建一个TaskBoardDetail.cshtml,内容如下:(主要是显示自己需要的数据)
-
@{
-
int i = 0;
-
}
-
@foreach(var item in ViewBag.DataList)
-
{
-
<div style="float:left;background-color:#e8e2e2;border:3px solid black;">
-
@foreach (var it in item)
-
{
-
<p style="background-color:#15d32b">@it.functionName </p> <br />
-
}
-
</div>
-
i++;
-
}
2.在HomeController.cs中添加获取数据的 TaskBoardDetail方法,可带参数可不带,根据自己的需要
-
[]
-
public ActionResult TaskBoardDetail(string value)
-
{
-
try
-
{
-
IEnumerable<IGrouping< string, TaskDetail>> taskGroup = list.GroupBy(p => p.projectName);
-
foreach ( var item in taskGroup)
-
{
-
if ( value==item.Key)
-
{
-
List<TaskDetail> list2= item.ToList();
-
var query = from p in list2 orderby p.priority select p; //按优先级排序
-
list2 = query.ToList();
-
IEnumerable<IGrouping< string, TaskDetail>> taskGroup2 = list2.GroupBy(p => p. group);
-
ViewBag.DataList = taskGroup2;
-
break;
-
}
-
}
-
return PartialView( "TaskBoardDetail");
-
}
-
catch (Exception exp)
-
{
-
throw exp;
-
}
-
}
其中TaskDetail是我自定义的类。此函数的主要目的就是给ViewBag.DataList赋值,并return PartialView("TaskBoardDetail");
3.我是要在Index页面点击按钮,刷新加载TaskBoardDetail内容。放置一个div用于承接TaskBoardDetail内容。
-
<div>
-
<input type="button" onclick="BtnClick()" value="确定">
-
</div>
-
-
<div id="Selector"> </div>
-
<script type="text/javascript" language="javascript">
-
$( document).ready( function () {
-
$( "input[type='button']").click( function () {
-
$.ajax({
-
url: "Home/TaskBoardDetail",
-
type: "Post",
-
data: { "value": $( this).val()},
-
success: function (data) {
-
$( "#Selector").html(data);},
-
error: function (XMLHttpRequest, textStatus, errorThrown) {
-
alert( "加载失败:" + errorThrown);
-
}
-
});
-
});
-
});
-
-
</script>
OK!加载刷新页面成功。
用法二:页面加载局部视图
Partial View 顾名思义就是Html代码片段,因此可以用Partial View 把部分的Html或显示逻辑包装起来,方便多次使用。
Partial View 需要放在Views/Shared 目录下,任何Controlller 下的Action 或 View 都可以载入。
如何载入Partial View?
MVC 的 HTML 辅助方法有个专门的方法载入分部View,方法名称为Partial.
- Partial有以下四种方式调用
方法原型 |
使用范例
|
Partial(HtmlHelper,String)
| Html.Partial("CustomerListControl") |
Partial(HtmlHelper,string,Object)
|
Html.Partial("CustomerListControl",Model)
|
Partial(HtmlHelper,string,ViewDataDictionary)
|
Html.Partial("CustomerListControl",ViewData["Model"])
|
Partial(HtmlHelper,string,Object,ViewDataDictionary)
|
Html.Partial("CustomerListControl",Model,ViewData["Model"])
|
- 使用控制器载入分部View
{
Return PartialView();
}
}
- 使用 Html.Action 载入分部View
局部视图代码:
@using Step1.Models;
@using System.Collections;
@model IEnumerable<Product>
<table border="1" >
<tr >
<td>
Name
</td>
<td>
Banner
</td>
</tr>
@foreach (var item in Model)
{
<tr>
<td>
@item.Name
</td>
<td>
@item.Banner
</td>
</tr>
}
</table>
普通视图代码:
View
using Step1.Models;
@model OrderModel
@{
ViewBag.Title = "Index";
}
<h2>Index</h2>
<div>
<div>
@Model.Customer.CompanyName
</div>
<div>
@Model.Customer.CustomerID
</div>
<div>
@Html.Partial("CustomerListControl",@Model.ProductList)
</div>
</div>
@model OrderModel
@{
ViewBag.Title = "Index";
}
<h2>Index</h2>
<div>
<div>
@Model.Customer.CompanyName
</div>
<div>
@Model.Customer.CustomerID
</div>
<div>
@Html.Partial("CustomerListControl",@Model.ProductList)
</div>
</div>
控制器代码:
Controller
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Step1.DAL;
namespace Step1.Controllers
{
public class PartialViewController : Controller
{
//
// GET: /PartialView/
public ActionResult Index()
{
var model= DBContext.GetOrderList();
return View(model);
}
}
}