Asp MVC(控制层高级调用)

换起ACTION

起到该作用的类是ControllerActionInvoker

作用:

1.找到对应的ACTION

2.找到当前路由传过来的参数,并解析

3.找到所有ACTION的FILTERS

4.然后调用executeResult返回。返回一个actionresult

默认返回(Content[即文本方式])

 

从router到controller链接的桥梁就是该类。

由router只是定义一个URL字典。然后该类就去遍历该字典,找到名字对应的ACTION的名字。

action的选择方法:

该类使用反射的方式来得到CONTROLLER所使用的方法。(所以方法函数必须是PUBLIC)

所以在CONTROLLER的方法要标记为ACTION,必须符合三个标准。

1.不允许有NonActionAttribute

2.构架函数,属性控制器,时间访问器不能作为制定的ACTION方法。

3.继承自OBJECT的方法或继承自CONTROLLER的方法

 

给你的ACTION取别名:

可以在你的ACTION方法上定义ActionName("别名")

 [ActionName("View")]
        public ActionResult DoSomething()
        {
            string js = "$('#some-div').html('Updated');";
            return JavaScript(js);
        }

 

然后你访问你的ACTION使用的就是:

http://localhost:2331/home/view 

 

在遍历ROUTER的结束,匹配的结果处理是通过ActionSelectorAttribute.来进行验证。如果验证通过,就返回

所以这就是为什么作为ACTION的方法不能是OBJECT的公用类,就是因为有该类进行验证。

 

映射参数:

/simple/distance/0,0/1,2

Request Form Collection

Route Data

Request QueryString collection

 

Request Form Collection:

如果使用POST方式提交,页面中的所有元素都会放到该集合中

 

调用ACTION

分为同步调用和异步调用

异步方式请求使用标签,如果要设置权限限制的话:

[Authorize]//权限验证

[HandleError(ExceptionType=typeof(TimeoutException))]

[NoAsyncTimeout]//永远不超时

[AsyncTimeout(6000)]//设置超时时间。

//对于以ASYNC和COMPLETE结尾的方法不能直接调用

public void ActionAsync(){

 

}

public ActionResult ActionCompleted()

{

 

}

 

 

 

你可能感兴趣的:(JavaScript,html,mvc,asp)