ASP.NET MVC小记
2010-10-07 21:01 音乐让我说 阅读(513) 评论(0) 编辑 收藏 举报- 在 ASP.NET MVC 2.0 中,一个普通的Action,比如:public ActionResult News(int? pageIndex)。如果在列表页面,页首有菜单导航,那么必须显示配置pageIndex = 1 :
<%= Html.ActionLink("新闻", "News", new { pageIndex = 1 }) %> ,只要配置一个路由即可,路由配置如下: routes.MapRoute("CompanyNewsPager", "Company/News/{pageIndex}", new { controller = "Company", action = "News", pageIndex = 1 });
- 关于
public static Route MapRoute(this RouteCollection routes, string name, string url, object defaults, object constraints);
routes.MapRoute("Friends", "Friends/{action}", new { controller = "Friends",action = "Index" }, new { isLoal = new LoalRouteConstraint() });
using System.Web; using System.Web.Routing; namespace WebUI.Extensions { public class LoalRouteConstraint : IRouteConstraint { public bool Match(HttpContextBase httpContext, Route route, string parameterName, RouteValueDictionary values, RouteDirection routeDirection) { return httpContext.Request.IsLocal;//只允许本机匹配 } } }
- 在Action 方法上标记[NonAction()] Attribute 表明:这个方法不是Action 方法,即不能通过浏览器访问
- Model 绑定只绑定UserInfo类的YouInputText属性:或者是排除某个属性:
public ActionResult TestActionFilter([Bind(Exclude = "Id,Age")] UserInfo userInfo, FormCollection formColle)
public ActionResult TestActionFilter([Bind(Include = "YouInputText")] UserInfo userInfo)
-
在一个ASP.NET MVC 应用程序中,假设存在物理路径 /Products/List/Add.aspx ,那么如果在浏览器中访问这个地址,这个 aspx 页面是会执行的。因为默认
RouteCollection 不会对已存在的文件路由(RouteCollection.RouteExistingFiles=false),要想让 ASP.NET 路由这个URL,则把该属性值设置为true,那么
ProductsController就会执行了。 - 手动初始化 UrlHelper:
string loginUrl = new UrlHelper(filterContext.RequestContext).Action("LogOn", "Account");
- MVC IOC
RouteData routeData = RouteTable.Routes.GetRouteData(filterContext.HttpContext); // 得到当前请求的路由数据 DependencyResolver.Current.GetService<IProductService>(); // 得到当前在 IOC 中注册的 IProductService 的实现类
- ASP.NET MVC 中尽量不要用 RedirectToRoute 来跳转,而要用 RedirectToAction 明确指定 Controller、Action,除非你在 Global.asax 配置的这个路由有明确的指定 Controller、Action,否则很可能出现死循环或者 404 错误,比如:在 Account 的 Logon 中登录成功后,跳转到 Product 的 Index 中,如果用 RedirectToRoute,很可能死循环或者跳转到 /Product/Logon 页面,因为你在路由中用了 Controller 或 Action 的默认值。
- ASP.NET MVC 中的 ActionDescriptor 类 或者 ControllerDescriptor 类分别表示标记在 Action 和 Controller 上面的 Attribute。
- ASP.NET MVC 4 中有一个 AllowAnonymousAttribute.cs 类,它可以标记在 Controller 或者 Action 上,用于跳过 AuthorizeAttribute 授权验证。
- 谢谢浏览...
作者:音乐让我说(音乐让我说 - 博客园)
出处:http://music.cnblogs.com/
文章版权归本人所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。