- 浏览: 99460 次
- 性别:
- 来自: 合肥
最新评论
-
helloqidi:
谢谢,学习了。
娃娃鸭学Ruby-34、可枚举的对象
文章列表
Custom Filters
➤IAuthorizationFilter
➤IActionFilter
➤IResultFilter
➤IExceptionFilter
ActionFilterAttribute类
ActionFilterAttribute
public virtual void OnActionExecuted(ActionExecutedContext filterContext);
public virtual void OnActionExecuting(ActionExecutingContext filterContext);
public virtual v ...
Filter的使用
-对Action的附加说明
Asp.net MVC中Filter
-Authorize
-HandleError
-OutputCache
-RequireHttps
AuthorizeAttribute标签
[Authorize(Roles=”Admins, SuperAdmins”)]
public class AdminController
{
//Only admins should see this.
public ActionResult Index()
{return View();}
//Only admins should see this.
publ ...
可枚举的对象
Array、Hash、Range及许多其他类都定义了each迭代器
[1,2,3].each{|x| print x}# prints "123"
(1..3).each{|x| print x} # prints "123"
Ruby的IO类也定义了一个each
File.open(filename) do |f|
f.each{|line| print line}
end
大多数定义了each方法的类都包含Enumerable模块,它定义了许多更特殊的迭代器,
each_with_index
File.open(filename ...
Action的调用与属性
1、唤起Action
Route找到Action
唤起Action
-ControllerActionInvoker
1)找到对应的Action
2)找到当前请求发生的参数,匹配
3)调用Action方法所有的Filters
4)调用ExcuteResult
2、Action匹配到URL
从URL中匹配Action名称
ContextResult
定位?
3、Action选择
反射方式找到类,找到方法
必须为Public
标准:
-不允许有NonActionAttribute标记
-构造函数,属性控制器, ...
虽然可用while,until和for循环
但还是更倾向于用迭代器
3.times{puts "thank you!"
data.each{|x| puts x}
[1,2,3].map{|x| x*x}
factorial=1
2.upto(n) {|x| factorial*=x}
times,each,map,upto都是迭代器
yield语句就是这些迭代器背后复杂的控制结构。yield语句从迭代器中临时地将程序控制权返回给那个调用迭代器的方法,具体来说,程序的控制流会从迭代器转移到那个与迭代器调用相关联的代码块中,当程序执行完代码块之后,迭代器方法重新获得控制权 ...
ActionResult
public abstract class ActionResult
{
public abstract void ExecuteResult(ControllerContextcontext);
}
命令模式
容器对象
ActionResult的重载
-EmptyResult 没有任何匹配和执行
-ContentResult 输出纯文本 AJAX
-JsonResult
-RedirectResult
-RedirectTo ...
关于Controller
Controller是什么?
Controller的历史
定义一个Controller
使用IController接口
Public interface Icontroller{
void Execute(RequestContextrequestcontext);
}
using System.Web.Mvc;
using System.Web.Routing;
public class SimpleController: IController{
public void Execute(RequestContextrequestContext){
var
r ...
For/in循环
for或for/in循环可对一个枚举对象(比如数组)的元素进行迭代。
for var in collection do
body
end
var是一个变量或一个由逗号分隔的变量列表,collection是一个具有each迭代器方法的对象。
array[1,2,3,4,5]
for element in array
puts element
end
hash={:a=>1,:b=>2,:c=>3}
for key,value in hash
puts "#{key}=>#{value}"
end
注意:
一个 ...
作为修饰符的while和until
x=0
puts x=x+1 while x<10
x=0
while x<10 do puts x=x+1 end
a=[1,2,3]
puts a.pop until a.empty?
注意:
当while和until作为修饰符时,它们必须和那些被它们所修饰的循环体处于同一行中。
x=10
begin
puts x
x=x-1
end until x==0
会在测试循环条件之前先执行一遍。
类似于其他语言do/while
用括号则不会出现上面情况
x=0
(
puts x
x=x-1
) until x==0
在Webform中使用routing
在Asp.net 4中使用Routing
在Asp.net 3.5中使用Routing
Asp.net WebForm 4中使用routing
void Application_Start(object sender,EventArgs e)
{
RegisterRoutes(RouteTable.Routes);
}
private void RegisterRoutes(RouteCollection routes)
{
routes.MapPageRoute(
"product-search",
"produc ...
While和until
while 当某个特定条件为真
until 直到某个条件为真
x=10
while x>=0 do
puts x
x=x-1
end
x=0
until x>10 do
puts x
x=x+1
end
注意:
while或until循环中的关键字do类似于if语句的关键字then,只要在循环条件和循环体之间存在一个换行符(或分号),就可以将do省略掉。
Routes是如何把URL映射为Action
-请求路由管道
请求管道概述
1.UrlRotingModule视图使用RouteTable里的注册路由当前请求
2.如果匹配成功,则从路由对象生成IRouteHandler对象
3.Routing模块调用IRouteHandler中的GetHandler方法,这一方法返回一个IHttpHandler
4.ProcessRequest对象调用Http handler对象响应
5.在MVC架构中IRouteHandler对象默认是一个MvcRouteHandler对象,它返回的对象是一个MvcHandler对象
路由匹配法则
-routedat ...
?:操作符
def how_many_messages(n)
"You have " +n.to_s +(n==1 ? " message.":" messages. ")
end
2011-4-19 13:30 danny
Case
name= case
where x==1 then "one"
where x==2 then "two"
where x==3 then "three"
where x==4 then "four"
else "many"
end
同if
case
where x==1
"one"
where x==2 ...
使用routing生成URL
URL生成器概述
1、质询每个路由表
2、匹配返回结果
URL生成器详细工作方式
1、调用RouteCollection.GetVirtualPath
2、匹配参数
3、匹配默认参数
使用命名路由
非指定变量的匹配
Route.MapRoute(null,"todo/{action}/{page}",
new {countroller="todo",action="list",page=0});
public string NextPageUrl(int currentpage ,Route ...