我们知道可以将代码和模型放在.cshtml文件里面或与.cshtml匹配的.cshtml.cs文件中。
Razor页面处理程序或处理方法将用户请求匹配到我们的方法,请求来自.cshtml文件。
Razor页面遵循特定的命名约定。例如下面这些:
从上面的例子中我们可以看到该命名都是以"On"开头,然后跟上它的请求方式,其次是可选的Handler名称,最后以Async结尾表示它是异步。
默认的请求处理方法:
默认的post请求,如果不指定action,它会找OnPost()方法。如果有,则调用对应的方法,没有的话将不触发任何方法。
<form method="post"> <input type="text" /> </form>
public void OnPost() { }
如果您同时实现OnPost()和OnPostAsync,则会出现以下错误:
如果我们的页面有多个post请求,例如下面:
public void Post() { } public void PostFirst() { }
我们可以采用给form表单添加asp-page-handler属性来自定义请求处理方法:
<form method="post" asp-page-handler="First"> <input type="text" /> </form>
上面的请求将请求PostFirst()方法,因为该方法的Handler和表单对应的属性对应。
处理方法参数
将参数传递给处理方法有两种方法:
通过表单输入传递参数:
<form method="post"> <input type="text" name="name"/> </form>
public void OnPost(string name) { }
通过路由传递参数:
第一个请求将请求OnPost方法并给参数name赋值为666。
第二个请求将请求OnPostRemove方法,并给参数id赋值为1。
<form method="post" asp-route-name="666"> </form> <form method="post" asp-route-handler="Remove" asp-route-id="1"> </form>
public void OnPost(string name) { } public void OnPostRemove(int id) { }
原文:http://www.cnblogs.com/shx666/p/7833899.html