Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,030

HOME > .NET Framework > Forum > ASP.NET 4.0 URL ROUTING ทำง่ายๆ ก้อจริงแต่มีปัญหาแปลกๆ ค่ะ พอจะมีใครลองเอารันบน web server ได้ป่าวคะ



 

ASP.NET 4.0 URL ROUTING ทำง่ายๆ ก้อจริงแต่มีปัญหาแปลกๆ ค่ะ พอจะมีใครลองเอารันบน web server ได้ป่าวคะ

 



Topic : 050842



โพสกระทู้ ( 1,603 )
บทความ ( 1 )



สถานะออฟไลน์




ตัว ASP.NET 4.0 ใน VSS 2010 มี FEATURE นึงที่พัฒนามาจนใช้งานกันง่ายๆคือ URL ROUTING
หรือที่รู้จักกันในชื่อ URL REWRITE ซึ่งพี่วินเคยใช้เทคนิค 404 Rewrite
จากเดิมใน ASP.NET 3.5 ต้องมีการ Modify Web.config กันแถบนึงเพื่อติดตั้ง HttpModule ของตัว URL ROUTING
แต่ใน ASP.NET 4.0 ไม่จำเป็นต้องทำอีกแล้ว

ตัว URL ROUTING นั้นสนับสนุนทั้ง MVC และ mode ปกติ ขอยก MVC ไปนะคะเพราะยังไม่เอามาใช้งานเท่าไหร่
ทีนี้เรามาดูว่า จะใช้ FEATURE นี้กันยังไง

แพ้บนึงค่า กำลัง cap screen



Tag : .NET, C#, VS 2010 (.NET 4.x)









ประวัติการแก้ไข
2010-10-27 23:00:04
2010-10-27 23:04:01
Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2010-10-27 22:48:43 By : blurEyes View : 5937 Reply : 19
 

 

No. 1



โพสกระทู้ ( 11,835 )
บทความ ( 10 )

สมาชิกที่ใส่เสื้อไทยครีเอท Hall of Fame 2012

สถานะออฟไลน์


รอเก็บความรู้ใหม่






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-10-27 22:49:51 By : PlaKriM
 


 

No. 2



โพสกระทู้ ( 1,603 )
บทความ ( 1 )



สถานะออฟไลน์


เริ่มด้วย new web site ขึ้นมา

ASP.NET 4.0 URL ROUNT - 01




แล้วก็เลือก ASP.NET Empty Web Site มาเลย อย่าลืมเลือก .Net framework 4.0 ด้วยนะคะ
ส่วนภาษาจะ c# หรือ vb.net ยังไงก็ได้เพราะมี code ไม่กี่บรรทัด
ที่ส่วน Web location เลือกตามสะดวก แต่ให้ใช้ folder ที่เป็น site ว่า SimpleUrlRoute ค่ะ

ASP.NET 4.0 URL ROUNTING - 02




ทีนี้ใน solution ของเราจะมีแค่ web.config แบบนี้

ASP.NET 4.0 URL ROUNTING - 03




เพื่อความกระชับขอข้ามไปเลยนะคะ
ให้ add item เข้าอีก 3 item คือ 1.global.asax 2.default.aspx 3.routepage.aspx
ตามนี้

ASP.NET 4.0 URL ROUNTING - 04


ประวัติการแก้ไข
2010-10-27 23:50:01
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-10-27 23:28:51 By : blurEyes
 

 

No. 3



โพสกระทู้ ( 1,603 )
บทความ ( 1 )



สถานะออฟไลน์


ขั้นต่อมาเราจะมาเขียน code เท่าที่จำเป็นกันนะคะ
เริ่มด้วยที่ Global.ASAX อันเป็นหัวใจสำคัญเลย มี code ที่จำเป็นๆ แค่นี้

ASP.NET 4.0 URL ROUNTING - 05




และใน DEFAULT.ASPX และ ROUTEPAGE.ASPX
จะยังไม่เขียน code อะไรมากมายนะคะ แค่ใส่ control เข้าไปก็พอดังนี้ค่ะ

img=ASP.NET 4.0 URL ROUNTING - 06fix

ASP.NET 4.0 URL ROUNTING - 07




พอครบแล้ว สั่ง RUN ซึ่งจะมี dialog มาถามก็กด ok ไป

ASP.NET 4.0 URL ROUNTING - 08


ประวัติการแก้ไข
2010-10-27 23:58:02
2010-10-27 23:59:01
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-10-27 23:49:25 By : blurEyes
 


 

No. 4



โพสกระทู้ ( 1,603 )
บทความ ( 1 )



สถานะออฟไลน์


ผลรันจะเป็นแบบนี้ ( อ้อ set ให้ default.aspx เป็น startup page ด้วยค่ะ )

ASP.NET 4.0 URL ROUNTING - 09



และพอลอง click ที่ link here ด้านล่างจะได้ผลลัพธ์แบบนี้ สังเกตุที่ address bar นะคะ url ที่ได้จะเป็น SEO Url ที่ต้องการแล้ว
ASP.NET 4.0 URL ROUNTING - 105



เสร็จแล้วค่ะ จะเห็นว่าเขียน code น้อยมาก ส่วน parameter ของการ route ใช้ร่วมกับ regex และ dictionary เพื่อเพิ่มประสิทธิภาพ
ได้จาก overload ของ method MapPageRoute จากระดับ basic ไปจน advance ได้ค่ะ

ส่วนการดึงค่า parameter ออกมาลองศึกษาเพิ่มดูนะคะ จะคล้ายกับการดึงค่าจาก querystring ค่ะ


ปัญหา

นั่งงมมาทั้งวันว่าทำไมเรา route กะเค้าไม่ได้น้อแก้หลายแก้จนสรุปได้ว่าเกิดจากชื่อ project นี่เอง
เพราะที่ใช้คือ General.KM.Proud.01.00.20 ลอง copy code เขามาก้อแล้วแก้ก้อแก้แล้วยังไงก้อ error
แต่พอลอง New Web Site ใช้ชื่อเป็น Test เจ๋ย ๆ เอ๋า route ได้ code เดียวกันเป๊ะๆ
นี่ test ที่ localhost นะคะเลยสงสัยถ้าเกิดเอาไป install ที่ web server และมี domain name เรียบร้อย
อย่าง www.thaicreate.com นี่มันยังจะรันได้มั้ย
สันนิษฐานว่าน่าจะได้แต่ยังไม่ยืนยันค่ะ พอจะมีครัยลองได้ปะคะ
ขอบคุณค่ะ

ปล.
General.KM.Proud.01.00.20 IIS หรือไม่ก็ Url Route คงเข้าใจว่าเป็น subdomain
แต่ก้อยังสงสัยอะค่ะ กับ domain จริงๆ ยังจะรันได้ป่าว



ประวัติการแก้ไข
2010-10-28 00:55:31
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-10-28 00:20:23 By : blurEyes
 


 

No. 5



โพสกระทู้ ( 11,835 )
บทความ ( 10 )

สมาชิกที่ใส่เสื้อไทยครีเอท Hall of Fame 2012

สถานะออฟไลน์


+1 ก่อนเลย ไม่ต้องเริ่มอ่านเอง เจ๋งไปเลย
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-10-28 00:23:44 By : PlaKriM
 


 

No. 6



โพสกระทู้ ( 74,058 )
บทความ ( 838 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter Facebook

ครับ เยียมจริง ๆ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-10-28 06:30:50 By : webmaster
 


 

No. 7

Guest


อยากรู้ว่า mr. Stupid gurl เวลาเขียนคำสั่ง insert ข้อมูลลง database ทำไงหรือครับ
ใช้ tool อัตโนมัติ หรือว่าเขียน query เองคล้ายๆ กับ mr. win
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-10-28 13:24:33 By : .net 2008
 


 

No. 8



โพสกระทู้ ( 1,603 )
บทความ ( 1 )



สถานะออฟไลน์


Quote:
อยากรู้ว่า mr. Stupid gurl เวลาเขียนคำสั่ง insert ข้อมูลลง database ทำไงหรือครับ
ใช้ tool อัตโนมัติ หรือว่าเขียน query เองคล้ายๆ กับ mr. win


อะนะไม่ใช่มิสเตอร์ค่ะ
ตอนนี้ upgrade code เป็น LINQ + STORE PROCEDURE เกือบทั้งหมดค่ะ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-10-28 13:34:48 By : blurEyes
 


 

No. 9

Guest


อย่างงี้นิเอง เจ๋งๆ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-10-28 13:47:06 By : .net 2008
 


 

No. 10



โพสกระทู้ ( 3,144 )
บทความ ( 1 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์


อะฮิๆ

เดี๋ยวว่างๆ จะมาเขียนมั่ง แต่ตอนนี้วุ่นวายมาก
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-10-29 08:29:02 By : tungman
 


 

No. 11



โพสกระทู้ ( 1,603 )
บทความ ( 1 )



สถานะออฟไลน์


เพิ่มเติมละกันนะคะจะได้จบเรื่อง Basic URL Routing นี่เลย

Code (C#)
    void Application_Start(object sender, EventArgs e) 
    {
        // Code that runs on application startup
        RouteTable.Routes.MapPageRoute("myFirstRoute"
            , "Route/{Parameter}", "~/RoutePage.Aspx");
        RouteTable.Routes.MapPageRoute("mySecondRoute"
            , "RouteData.Aspx", "~/404Error.Aspx");
        RouteTable.Routes.MapPageRoute("myThirdRoute"
            , "Route/{Parameter}/{locale}", "~/RoutePage.Aspx");
    }


Code (ASP)
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        THIS IS HOME PAGE!!
        <br />
        <a href="RoutePage.aspx?Target=1234">Direct link to routepage.aspx</a><br />
        Url Route
        <asp:HyperLink ID="HyperLink1" NavigateUrl="~/ROUTE/1234" runat="server">Here</asp:HyperLink>
        &nbsp;or&nbsp;<a href="ROUTE/567890/BKK">Here</a><br />
        <asp:HyperLink ID="HyperLink2" NavigateUrl="~/RouteData.Aspx"  runat="server">Prevent Route</asp:HyperLink>
        </div>
    </form>
</body>
</html>


และก้อที่ RoutePage.Aspx กะ RoutePage.Aspx.Cs
Code (ASP)
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="RoutePage.aspx.cs" Inherits="RoutePage" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        ROUTE PAGE HERE !! <br />
        <asp:HyperLink ID="HyperLink1" NavigateUrl="~/Default.aspx" runat="server">Home</asp:HyperLink><br />
        <asp:Label ID="LabelParameter" runat="server" Text="Label"></asp:Label>
    </div>
    </form>
</body>
</html>


Code (C#)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class RoutePage : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            string tempStr = string.Format("Total parameter :{0} <br />", Page.RouteData.Values.Count.ToString());

            if (Page.RouteData.Values.Count > 0)
            {
                foreach (string keyStr in Page.RouteData.Values.Keys)
                {
                    tempStr += keyStr + " = " + Page.RouteData.Values[keyStr].ToString() + " <br />";
                }
            }
            tempStr += "<hr />";
            Response.Write(tempStr);
        }
    }
}


จาก bug ของ Url Routing มีผลกระทบให้ทำ sub version control สะริ้วส์ >,<
เพราะปกติจะตั้งชื่อ project ให้สื่อความหมายไปเลย รวมถึง version ต่างๆ ด้วยค่ะ


ประวัติการแก้ไข
2010-10-29 09:48:46
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-10-29 09:24:36 By : blurEyes
 


 

No. 12



โพสกระทู้ ( 74,058 )
บทความ ( 838 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter Facebook

วันนี้มีโอกาศได้เขียนตามบทความนี้ครับ ขอบคุณน้องหม่วยจริง ๆ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-03-16 06:36:42 By : webmaster
 


 

No. 13

Guest


มีปัญหาไม่จบค่ะ บาง host ถึงจะบอกว่า support .net framework 4.0 แต่ใช้ url routing ไม่ได้ก้อมีค่ะ
เพื่อตัดปัญหาเลยเขียน 404 url rewriting เอาเองค่ะ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-03-16 14:06:36 By : สาวเอ๋อ เอ๋อเหรอ เอ๋อมากมาย
 


 

No. 14

Guest


บ้านมาก
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-06-09 14:29:25 By : บ้านๆ
 


 

No. 15



โพสกระทู้ ( 2 )
บทความ ( 0 )



สถานะออฟไลน์


จะพยามยามหันVB
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-06-14 15:42:48 By : ereanor
 


 

No. 16



โพสกระทู้ ( 245 )
บทความ ( 0 )



สถานะออฟไลน์


ขอบคุณมากครับ สำหรับความรู้

ปล. ใช้หน้าจอดำๆ แบบนี้ไม่ปวดตาหรอครับ รู้สึกว่าเคยอ่านเจอว่า ใช้ พื้นหลังสีขาวดีกว่า

เอ๊ะ หรือยังไง ครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-06-14 16:15:06 By : 13crowns
 


 

No. 17

Guest


เคยเทียบกันแล้ว ดูสีดำนานๆ สบายตากว่าค่ะ
คงเป็นความชอบส่วนบุคคลมั้งคะ

รู้สึกจะเป็นตัว config สีที่ อจ. ให้มามั้งคะ
ไม่ได้ทำเองหรอกค่ะ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-06-15 09:13:42 By : เอ๋อน้อย หลานย่าสุ
 


 

No. 18

Guest


ที่เครื่องไม่มีปัญหาครับ แต่ไม่สามารถ Run บน server จริงได้ ปวด head จริงๆ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-04-04 14:04:54 By : titipong
 


 

No. 19

Guest


ขอบคุณสำหรับบทความครับ

ผมเจอปัญหาเหมือนที่บอกเลย คือ ต้องสร้าง Project ใหม่ ถึงใช้ได้ นำไปใช้กับโปรเจ็คเดิมใช้ไม่ได้แฮะ งงเต๊ก
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-03-01 11:43:22 By : offduiclub
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : ASP.NET 4.0 URL ROUTING ทำง่ายๆ ก้อจริงแต่มีปัญหาแปลกๆ ค่ะ พอจะมีใครลองเอารันบน web server ได้ป่าวคะ
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 03
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่