gpt4 book ai didi

asp.net-mvc-3 - 如何在 MVC 3 中映射类似 (site.com/username) 的路由

转载 作者:行者123 更新时间:2023-12-01 02:47:40 25 4
gpt4 key购买 nike

我想绘制这样的路线:

mysite.com/username



在 ASP.NET MVC 3 应用程序中;请问我该怎么做?
谢谢大家,问候

最佳答案

可能在最开始添加自定义路由,从 System.Web.Routing.Route 继承,并覆盖方法

protected virtual bool ProcessConstraint(HttpContextBase httpContext, object constraint, 
string parameterName, RouteValueDictionary values, RouteDirection routeDirection)

您将在其中使用索引列检入数据库。

只需添加一些不可为空的约束对象,如
Constraints = new { username = "*" }

这样路由对象将处理约束。

在点击数据库之前,可能会试探一下这是否可以是用户名。请记住,您不能让用户与 Controller 相同(当具有默认操作时),因此您想以某种方式限制它。请注意这是否不会影响年度性能,但是您可能没有很多路线在斜线后具有单一值。

这就是你如何做到这一点。
public class UserRoute : Route
{
public UserRoute(string url, RouteValueDictionary defaults, RouteValueDictionary constraints, IRouteHandler routeHandler)
: base(url, defaults, constraints, routeHandler)
{
}

protected override bool ProcessConstraint(HttpContextBase httpContext, object constraint, string parameterName, RouteValueDictionary values, RouteDirection routeDirection)
{
if (routeDirection == RouteDirection.UrlGeneration)
return true;

object value;
values.TryGetValue(parameterName, out value);
string input = Convert.ToString(value, CultureInfo.InvariantCulture);
// check db
if (!CheckHeuristicIfCanBeUserName(input))
{
return false;
}

// check in db if exists,
// if yes then return true
// if not return false - so that processing of routing goes further
return new[] {"Javad_Amiry", "llapinski"}.Contains(input);
}

private bool CheckHeuristicIfCanBeUserName(string input)
{
return !string.IsNullOrEmpty(input);
}
}

这在开头添加。
routes.Add(new UserRoute("{username}", 
new RouteValueDictionary(){ {"controller", "Home"}, {"action", "About"}},
new RouteValueDictionary(){ { "username", "*" }}, new MvcRouteHandler()));

以两种方式对我有用,生成和传入。

关于asp.net-mvc-3 - 如何在 MVC 3 中映射类似 (site.com/username) 的路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6554948/

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