iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 23
1
Modern Web

打net core肉飯系列 第 23

[2020鐵人賽] Day23 - Razor Page(2/3)

  • 分享至 

  • xImage
  •  

承接上一章,我們這章來玩玩看Razor Page下表單傳遞資料並做Model Binding看看,從上一章我們知道,Razor Page只有Page這個類別,並有類似Webform的CodeBehind,我們馬上來試試看吧!

Model Binding
在此之前,先來引入Tag Helper吧!我們先在_ViewImports.cshtml中引入Tag Helper以便之後專案都可以使用!不過這邊我們建議_ViewImports.cshtml放在Pages資料夾內。
https://ithelp.ithome.com.tw/upload/images/20201008/20111766d3LnOZCYc3.png
_ViewImports.cshtml引入addTagHelper

@namespace Test.Pages
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers

cshtml
接著,引入完之後我們使用Tag Helper,接著,我們把textbox給submit到後端試試看,記得Razor Page第一行要寫@page宣告

@page
@model TestModel
@{
    Layout = null;
}

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Test</title>
</head>
<body>
    <h1>Test</h1>
    <form method="post">
        <input asp-for="Hello" />
        <input type="submit" />
    </form>
</body>
</html>

cs(Page Model)
這邊要注意,為了要Binding property,我們必須在Hello寫上[BindProperty]這個Attribute才可以成功!可參考下方程式。

using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;

namespace Test.Pages
{
    public class TestModel : PageModel
    {
        [BindProperty]
        public string Hello { get; set; }
        public void OnGet()
        {
            
        }
        public void OnPost()
        {
            string str = string.Empty;
            str = $"Hi {Hello}";
        }
    }
}

非常簡單就可以在前端submit後,後端OnPost接收到Hello(BindProperty)這個textbox的內容。

使用Layout
介紹完Model Binding後,我們來引入Layout,這個在前面的MVC章節有介紹過,概念很類似,Layout就是確保整個網站有一個一致的樣子,共用的前端函式庫(js、css)也可以放在這裡面,不過有一點要注意,因為以前MVC還有Views\Shared資料夾,這邊沒有,所以我們就放在Pages資料夾底下了。

我們開始新增Layout吧!在Pages資料夾->新增->Layout
https://ithelp.ithome.com.tw/upload/images/20201008/20111766ByvubUenbS.png
一樣要呼叫@RenderBody方法來載入其他頁面。

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>@ViewBag.Title</title>
</head>
<body>
    <h1>Razor Page Layout</h1>

    <div>
        @RenderBody()
    </div>
</body>
</html>

Layout的設定就完成了,是不是非常簡單呢!

參考資料
https://docs.microsoft.com/zh-tw/aspnet/core/tutorials/razor-pages/search?view=aspnetcore-3.1


上一篇
[2020鐵人賽] Day22 - .net core 檔案上傳
下一篇
[2020鐵人賽] Day24 - .net core + kendo Grid的處理
系列文
打net core肉飯30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言