ข้อกำหนดเบื้องต้น

  • วิชวลสตูดิโอ 2022
  • NET 6 SDK ใช้ในตัวอย่าง

เอเอสพี.เน็ต

ASP.NET ขยายแพลตฟอร์ม .NET ด้วยเครื่องมือและไลบรารีสำหรับสร้างเว็บแอปโดยเฉพาะ นี่คือบางสิ่งที่ ASP.NET เพิ่มให้กับแพลตฟอร์ม .NET:

  • กรอบพื้นฐานสำหรับการประมวลผลคำขอเว็บใน C#
  • ไวยากรณ์การสร้างเทมเพลตเว็บเพจหรือที่เรียกว่า Razor สำหรับสร้างไดนามิกเว็บเพจโดยใช้ C#
  • ไลบรารีสำหรับรูปแบบเว็บทั่วไป เช่น Model View Controller (MVC)
  • ระบบการยืนยันตัวตนที่มีไลบรารี ฐานข้อมูล และหน้าเทมเพลตสำหรับจัดการการเข้าสู่ระบบ รวมถึงการรับรองความถูกต้องด้วยหลายปัจจัยและการตรวจสอบภายนอกด้วย Google, Twitter และอื่นๆ
  • ส่วนขยายตัวแก้ไขเพื่อให้การเน้นไวยากรณ์ การเติมโค้ด และฟังก์ชันอื่นๆ สำหรับการพัฒนาเว็บเพจโดยเฉพาะ

รหัสส่วนหลัง เมื่อใช้ ASP.NET โค้ดส่วนหลังของคุณ เช่น ตรรกะทางธุรกิจและการเข้าถึงข้อมูล จะเขียนโดยใช้ C#, F# หรือ Visual Basic เนื่องจาก ASP.NET ขยาย .NET คุณจึงสามารถใช้ระบบนิเวศขนาดใหญ่ของแพ็คเกจและไลบรารีที่มีให้สำหรับนักพัฒนา .NET ทุกคน คุณยังสามารถสร้างไลบรารีของคุณเองที่ใช้ร่วมกันระหว่างแอปพลิเคชันใดๆ ที่เขียนบนแพลตฟอร์ม .NET

หน้าไดนามิกโดยใช้ C#, HTML, CSS และ JavaScript Razor มีไวยากรณ์สำหรับสร้างหน้าเว็บแบบไดนามิกโดยใช้ HTML และ C# รหัส C# ของคุณได้รับการประเมินบนเซิร์ฟเวอร์และเนื้อหา HTML ที่เป็นผลลัพธ์จะถูกส่งไปยังผู้ใช้ รหัสที่ดำเนินการฝั่งไคลเอ็นต์เขียนด้วย JavaScript ASP.NET ผสานรวมกับเฟรมเวิร์ก JavaScript และรวมถึงเทมเพลตที่กำหนดค่าไว้ล่วงหน้าสำหรับเฟรมเวิร์กแอปหน้าเดียว (SPA) เช่น React และ Angular

การสร้างโครงการ ASP.NET

ในการสร้างโปรแกรม ASP.NET ให้ทำตามขั้นตอนด้านล่าง:

  1. สร้างโครงการ ASP.NET สร้างโครงการ ASP.NET
  2. ติดตั้งไลบรารีล่าสุดจาก NuGet ผู้จัดการ Nuget
  3. เพิ่มสปินเนอร์ของตัวโหลดลงใน Layout.cshtml
<!DOCTYPE html>
<html lang="en">
<head>
     <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>@ViewData["Title"] - Viewer</title>
    <link rel="stylesheet" href="~/lib/bootstrap/dist/css/bootstrap.min.css" />
    <link rel="stylesheet" href="~/css/site.css" asp-append-version="true" />
    <link rel="stylesheet" href="~/Viewer.styles.css" asp-append-version="true" />
</head>
<body>

    <div id="loader">
        <div class="spinner"></div>
    </div>
	
    @RenderBody()

    <script src="~/lib/jquery/dist/jquery.min.js"></script>
    <script src="~/lib/bootstrap/dist/js/bootstrap.bundle.min.js"></script>
    <script src="~/js/site.js" asp-append-version="true"></script>
    @await RenderSectionAsync("Scripts", required: false)
</body>
</html>
  1. Add JavaScript for spinner to Index.cshtml.

    <script type="text/javascript">
        function getLoader() {
            var loader = document.getElementById("loader");
    
            if (loader.style.display == "")
                loader.style.display = "block";
            else
                loader.style.display = "none";
        }
    </script>

  2. Create upload method in HomeController.

    public class HomeController : Controller
    {
        private readonly ILogger<HomeController> _logger;
    
        public HomeController(ILogger<HomeController> logger)
        {
            _logger = logger;
        }
    
        public IActionResult Index()
        {
            return View();
        }
    
        [ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)]
        public IActionResult Error()
        {
            return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier });
        }
    
        [HttpPost]
        public ActionResult Upload(IFormFile file)
        {
            try
            {
                var ms = new MemoryStream();
                var image = Image.Load(file.OpenReadStream());
                image.Save(ms, new PngOptions());
    
                return View("Index", Convert.ToBase64String(ms.ToArray())); // return base64 model to Index
            }
            catch(Exception ex)
            {
                return BadRequest(ex.Message);
            }
           
        }
    }

  3. Add upload file form to index.cshtml.

    @if (Model != null)
    {
        <img src="data:image/png;base64, @Model" /> // show image in browser if file is uploaded
    }
    
    <form method="post" class="form-control" enctype="multipart/form-data" asp-controller="Home" asp-action="Upload" style="text-align: center;">
        <div>
            <span>Select File:</span>
            <input type="file" name="file" multiple />
        </div>
        <input type="submit" value="Upload" onclick='getLoader()' />
    </form>

  4. Create style for spinner in wwwroot/css/site.css file.

    html {
      font-size: 14px;
    }
    
    @media (min-width: 768px) {
      html {
        font-size: 16px;
      }
    }
    
    html {
      position: relative;
      min-height: 100%;
    }
    
    body {
      margin-bottom: 60px;
    }
    
    img {
        display:block;
        margin:auto;
        max-height: 80%;
        max-width: 80%;
    }
    
    .spinner {
        margin: auto;
        margin-top: 20%;
        border: 16px solid #296fab; /* Blue */
        border-top: 16px solid #0a8f33; /* Green */
        border-radius: 50%;
        width: 120px;
        height: 120px;
        animation: spin 2s linear infinite;
    }
    
    #loader {
        display: none;
        position: absolute;
        height: 100%;
        width: 100%;
        background-color: #e1e1e1;
    }
    
    @keyframes spin {
        0% {
            transform: rotate(0deg);
        }
    
        100% {
            transform: rotate(360deg);
        }
    }

ตัวอย่างการดำเนินการ

  1. คลิกปุ่มเลือก ปุ่มเลือก
  2. เลือกไฟล์ DWG เลือกไฟล์
  3. คลิกปุ่มอัปโหลด
  4. รอให้การประมวลผลเสร็จสิ้น เลือกไฟล์
  5. หลังจากการประมวลผลเสร็จสิ้น สปินเนอร์จะหายไปและภาพจะแสดงบนหน้าจอ ผลลัพธ์

ดูสิ่งนี้ด้วย