त्वरित जवाब इस्तेमाल होता है:
routes.MapPageRoute(
"groupname",
"{group}",
"~/public/viewgroup"
);
और फिर बजाय (या के साथ-साथ) querystring
का उपयोग कर ~/public/viewgroup
कोड में मान प्राप्त करने के, आप के बजाय RouteData
से समूहनाम निकालने होगा निम्नलिखित नुसार।
ControllerContext.RouteData.Values["groupname"];
दूसरा विकल्प आईआईएस रीराइट मॉड्यूल का उपयोग करता है।
<rewrite>
<rules>
<rule name="groupname">
<match url="^([^/]*)$" />
<action type="Rewrite" url="public/viewgroup?group={R:1}" />
</rule>
</rules>
</rewrite>
तुम सच में एक नया querystring
मूल्य के रूप में मान पास करना होगा, और रूटिंग का उपयोग करना चाहते हैं, तो चीजें मुश्किल हो। आपको वास्तव में एक कस्टम हैंडलर को परिभाषित करना होगा और रूटिंग मानों को querystring
पर जोड़ने के लिए पथ को फिर से लिखना होगा।
public class RouteWithQueryHandler : PageRouteHandler
{
public RouteWithQueryHandler(string virtualPath, bool checkPhysicalUrlAccess)
: base(virtualPath, checkPhysicalUrlAccess)
{
}
public RouteWithQueryHandler(string virtualPath)
:base(virtualPath)
{
}
public override IHttpHandler GetHttpHandler(RequestContext requestContext)
{
var request = requestContext.HttpContext.Request;
var query = HttpUtility.ParseQueryString(request.Url.Query);
foreach (var keyPair in requestContext.RouteData.Values)
{
query[HttpUtility.UrlEncode(keyPair.Key)] = HttpUtility.UrlEncode(
Convert.ToString(keyPair.Value));
}
var qs = string.Join("&", query);
requestContext.HttpContext.RewritePath(
requestContext.HttpContext.Request.Path, null, qs);
return base.GetHttpHandler(requestContext);
}
}
यह पंजीकृत किया जा सकता इस प्रकार है:
routes.Add("groupname", new Route("{groupname}/products.aspx",
new RouteWithQueryHandler("~/products.aspx", true)));
यह काफी काम का एक बहुत सिर्फ रूटिंग आंकड़ों के बाहर मूल्य खींच से बचने के लिए है।
मैं इसे करने की कोशिश की, स्थानीय सर्वर पर लेकिन उत्पादन में नहीं काम किया। –
यह उत्पादन पर काम किया; इन्हें web.config <मॉड्यूल रनअलेमैन किए गए मॉड्यूलफोरएलआरक्वेट्स = "सत्य"> –
अंतिम कॉन्फ़िगरेशन प्लस सिस्टम पर कॉन्फ़िगरेशन जोड़ें।वेब < ", System.Web.Routing संस्करण = 3.5.0.0, संस्कृति = तटस्थ, PublicKeyToken = 31BF3856AD364E35" विधानसभा = जोड़ने /> संकलन> <जोड़ने नाम = "UrlRoutingModule " प्रकार =" System.Web.Routing.UrlRoutingModule, System.Web.Routing, संस्करण = 3.5.0.0, संस्कृति = तटस्थ, PublicKeyToken = 31BF3856AD364E35 "/> httpModules> –