ASP.NET MVC小记
2010-10-07 21:01 音乐让我说 阅读(514) 评论(0) 编辑 收藏 举报- 在 ASP.NET MVC 2.0 中,一个普通的Action,比如:public ActionResult News(int? pageIndex)。如果在列表页面,页首有菜单导航,那么必须显示配置pageIndex = 1 :
12345678
<%= 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/
文章版权归本人所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步