Asp.Net教程,WinForm教程,Asp.Net MVC,vs2008教程,vs2010教程,Silverlight技术,源码下载,Asp.Net视频教程
全站热门标签
vs2010 Silverlight 存储过程 水晶报表 ADO.NET JavaScript LINQ AjaxPro DataGridView 面向对象 Extjs GridView XML DevExpress HTML教程 Oracle jQuery 分页 GDI+ Visual C++2010 MySQL Office2010 WPF MVC Dojo WCF4.0 VB.NET Sql2005 textbox cookie WCF WinForm Discuz!NT SQL经典语句 T-SQL checkbox ASPxGridView F# asp.net SQL VS2008新特性 DropDownList Access TreeView Ajax VS2008 页面执行时间 Flex 字符串 回调 VB2005 DataSet C#时间 ASP.NET性能优化 用户在线检测 动画
当前位置: 主页 > Mvc技术 >

ASP.NET MVC Framework体验(4):控制器(2)

时间:2010-06-30 21:06来源:未知 作者:admin 点击:

 使用强类型类来传递视图数据,有如下好处(来自于scrottgu): 

 1.避免使用字符串来查询对象,得到对你的控制器和视图代码的编译时检查

 2.避免需要在使用象c#这样的强类型语言中明确转换viewdata对象字典中的值   

   3.在你的视图网页的标识文件以及后台代码文件中得到你的viewdata对象的自动代码intellisense  

 4.可以使用代码重构工具来帮助自动化对整个应用和单元测试代码库的改动

使用ViewData字典来传递数据
 
在Controller基类中,有一个这样的字典定义:
public IDictionary<string, object> ViewData { get; }
这样我们可以直接把视图数据通过ViewData字段来传递,如下示例代码:
[ControllerAction]
public void Index()
{
    BlogRepository repository = new BlogRepository();
    List<Post> posts = repository.GetAll();

    List<Category> categories = repository.GetAllCategory();

    ViewData["posts"] = posts;
    ViewData["categories"] = categories;
    RenderView("Index");
}
在试图中,可以这样来获取视图数据:
<div>
    <%foreach (Post post in (ViewData["posts"] as List<Post>))
      { %>
    <div class="postitem">
        <strong>Title</strong>:<%=Html.Encode(post.Title) %></br>
        <strong>Author</strong>:<%=Html.Encode(post.Author) %></br>
        <strong>PubDate</strong>:<%=Html.Encode(post.PubDate.ToShortDateString()) %></br>
        <strong>Content</strong>:<%=Html.Encode(post.Description) %></br>
        <%=Html.ActionLink("Edit", new {action="Edit", Id=post.Id })%>
    </div><br />
    <% } %>
</div>
处理未知的Action
Controller类中包含了一个HandlerUnknownAction的方法:
protected internal virtual void HandleUnknownAction(string actionName);
它用来处理一些未知的Action,默认情况下将返回HTTP 404错误,如果想自定义该处理,可以覆写该方法:
[ControllerAction]
protected override void HandleUnknownAction(string actionName)
{
    if (ShouldShowSearch(action) == true)
    {
        RedirectToAction("search", new { query = action });
        return;
    }

    base.HandleUnknownAction(actionName);
}
它用来处理当出现未知的Action时,跳转向Search Action。
(责任编辑:admin)
Tags:ASP.NET MVC 控制器
责任编辑:admin
返回顶部
------分隔线----------------------------
推荐内容
骆驼户外男 真皮磨砂日常休闲鞋 低帮 2011秋冬新款 专柜正品特价 骆驼户外男 真皮磨砂日常休闲鞋 低帮 2011秋冬新款 专柜正品特价