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)
{

}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM