gpt4 book ai didi

c# - AsP.NET 4.0 url 路由

转载 作者:太空宇宙 更新时间:2023-11-03 16:47:06 24 4
gpt4 key购买 nike

我正在尝试 .NET 4.0 的新功能 - url 路由但无法获取 url 中传递的信息。以下是代码:

全局.ASPX.CS

    protected void Application_Start(object sender, EventArgs e)
{
SetRouting(RouteTable.Routes);
}

private void SetRouting(RouteCollection routeCollection)
{
routeCollection.MapPageRoute("Company",
"Company/{CompanyName}",
"~/Asset/RequestForm.aspx", true, new RouteValueDictionary { { "CompanyName", "?CompanyName" } });

routeCollection.MapPageRoute("Deal",
"Company/{CompanyName}/{DealName}",
"~/Asset/RequestForm.aspx", true, new RouteValueDictionary { { "DealName", "?DealName" } });
routeCollection.MapPageRoute("ClientRoute",
"Client/{ClientCompanyName}",
"~/User/Login.aspx", true, new RouteValueDictionary { { "ClientCompanyName", "?ClientCompanyName" } });
}

登录.aspx:

    private string CompanyName { 
get
{
if (Page.RouteData.Values["ClientCompanyName"] == null)
{
return null;
}
return Page.RouteData.Values["ClientCompanyName"].ToString();
}
}

现在,即使我在 url 中使用 Client/Google,上述属性也会返回 null。当我重置 IIS (IIS 6) 并第一次执行此操作时,它会返回值。否则它给出 null。

有什么线索吗??

最佳答案

routeCollection.MapPageRoute("ClientRoute", 
"Client/{ClientCompanyName}",
"~/User/Login.aspx",
true,
new RouteValueDictionary {{ "ClientCompanyName", "?ClientCompanyName"}};

这实际上没有多大意义。如果未提供 URL 中的“ClientCompanyName”值,RouteValueDictionary 用于指示要使用的默认值。在这里,您是说您希望“?ClientCompanyName”成为默认值。例如,如果您导航到 http://baseUrl/Client , 这将默认为 http://baseUrl/Client/?ClientCompanyName (字面上地)。我认为您想实际将 ?ClientCompanyName 更改为您希望成为默认值的实际“真实”公司名称。我的建议是在这种情况下不要有默认值,而只是使用带有 3 个参数(字符串、字符串、字符串)的 MapPageRoute 覆盖。我发现在很多情况下这就足够了。另外,这里有一个扩展方法,你可以为请求对象提供帮助:

public static string GetDataFromRouteOrRequest(this HttpRequest request, string key)
{
if (request.RequestContext.RouteData.Values.ContainsKey(key))
return request.RequestContext.RouteData.Values[key].ToString();

return request[key];
}

关于c# - AsP.NET 4.0 url 路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5553171/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com