zoukankan      html  css  js  c++  java
  • Asp.Net core Razor页面的请求方法

    我们知道可以将代码和模型放在.cshtml文件里面或与.cshtml匹配的.cshtml.cs文件中。

    Razor页面处理程序或处理方法将用户请求匹配到我们的方法,请求来自.cshtml文件。

    Razor页面遵循特定的命名约定。例如下面这些:

    • OnGet
    • OnPost
    • OnGetAsync
    • OnPostAsync
    • OnPostStudent

    从上面的例子中我们可以看到该命名都是以"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和表单对应的属性对应。

    处理方法参数

    将参数传递给处理方法有两种方法:

    • 表单输入
    • 表单元素借助asp-route Tag Helper

    通过表单输入传递参数:

    <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)
    {
    
    }
  • 相关阅读:
    Java实现三人年龄
    从session中获取当前用户的工具类
    全局Session-GlobalSession
    Request获取Session的两种方式
    跨域访问sessionid不一致问题
    获得HttpServletRequest 和HttpSession对象
    eclipse pom.xml 报错org.apache.maven.plugin.war.WarMojo的解决办法
    idea与eclipse项目相互导入的过程
    静态工具类中使用注解注入service实例
    解决静态utils里面注入mapper对象
  • 原文地址:https://www.cnblogs.com/shx666/p/7833899.html
Copyright © 2011-2022 走看看