Html.RenderPartial与PartialView

 在完整视图中的呈现
  Html.RenderPartial(string partialName);
  Html.Renderpartial(string partialName,object model);
  Html.RenderPartial(string partialName,ViewDataDictionary viewData);
  Html.RenderPartial(string partialName,object model,ViewDataDictionary viewData);
RenderPartial函数直接加载局部试图,并且把数据传递到局部试图,可以没有Controller.
 
PartialView的Controler
  通过UrlRoute定位到Controler->Action在Action中指定PartialView,控制权在Controler中.
  mvc中的ascx视图可以独立的被访问,不要求必须在完整视图中。
  但是有没有一个空间通过Controler->Action->PartialView 的过程在完整视图中展示内容呢?通过下面的异步加载方式是可以的。
  通过浪费一个http连接显示结果貌似不值。
 PartView的异步加载
1.首先创建一个PartialView,其实就是一个UserControl
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<IEnumerable<Web.Models.BlogItem>>" %>    
<table>
   <tr>
     <th>Ttile</th>
<th>Author</th>
<th>Details</th>
<th>Time</th>
</tr>
<%foreach (var item in Model) { %>
<tr>
<td><%= Html.Encode(item.Title) %></td>
    <td><%= Html.Encode(item.Author) %></td>
    <td><%= Html.Encode(item.Details) %></td>
    <td><%= Html.Encode(item.Time) %></td>
</tr>
<% } %>
</table>

2.Action代码
        [Authorize] 
public ActionResult Blog(string id){
var blogs = new Models.BlogItem[]{
new Models.BlogItem(){
        Title="评论标题",Details="我的评论",Author="陈希章",Time=DateTime.Now},
new Models.BlogItem(){
          Title="评论标题",Details="我的评论",Author="陈希章",Time=DateTime.Now},
  new Models.BlogItem(){Title="评论标题",Details="我的评论",Author="陈希章",Time=DateTime.Now},
  new Models.BlogItem(){Title="评论标题",Details="我的评论",Author="陈希章",Time=DateTime.Now},
   new Models.BlogItem(){Title="评论标题",Details="我的评论",Author="陈希章",Time=DateTime.Now}
   };
       return PartialView("BlogView", blogs);
}
3.异步加载
$("#blog").load(action + key);
posted @ 2013-04-28 11:13  乔先生  阅读(589)  评论(0编辑  收藏  举报