ASP.NET WebForms 也能实现友好的 URL!





4.00/5 (1投票)
在本文中,我将介绍 ASP.NET WebForms 中的 FriendlyUrls 的概念。我们将了解如何从格式化的 URL 字符串中检索数据,以便使用它。我们还将简要介绍 ASP.NET 4.5 中的 ValueProviders 以呈现一些数据。
随着 ASP.NET 4.5 版本的发布,我们看到了声明式模型绑定、值提供程序、非侵入式验证和模型状态的加入。虽然其中一些功能是从 MVC 框架移植过来的,但我们仍然缺少那种酷炫的 SEO 友好的 URL 格式。随着 ASP.NET 2012.2 的发布,微软满足了这一需求。
通过安装带有命令的 NuGet 包,可以将 FriendlyURLs 功能添加到任何 ASP.NET WebForms 4 项目中
Install-Package Microsoft.AspNet.FriendlyUrls -Pre
如果您当前没有在您的 WebForms 项目中使用路由,您将需要添加一个调用来配置路由。如果您熟悉 MVC,您应该认识到这个代码片段在 global.asax.cs 文件中
RouteConfig.RegisterRoutes(RouteTable.Routes);
App_Start 文件夹中 RouteConfig.cs 文件的内容应该类似于
public static class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.EnableFriendlyUrls(new FriendlyUrlSettings()
{
AutoRedirectMode = RedirectMode.Permanent,
CachingMode = CachingMode.Dynamic
});
}
}
我添加了配置选项,以使从 FriendlyUrl
路由进行的重定向成为永久性的(HTTP 301 状态码),然后动态缓存输出内容。有了这个配置,我现在可以将用户路由到看起来很酷并且对 SEO 友好的 URL,例如
我知道你在想:Jeff,在 MVC 中,我通过作为输入参数的操作方法获取来自请求的条目,我如何从 WebForm 访问这些值? FriendlyUrls 的实现包括一个针对 Request
对象的扩展方法,名为 GetFriendlyUrlSegments
,它返回一个 IList<string>
。很好,如果你 真的 想遍历整个 URL 并解析提交的内容,但我认为还有一些你更喜欢的东西。
输入 ValueProviders
ValueProvider
s 是参数级别的属性,可用于修饰 WebForms 中的方法。使用 FriendlyUrlSegments
属性,我可以在 WebForm 中配置一个 public
方法,以根据在 URL 上提交的值提供内容。考虑这个简单的 WebForm
我可以使用 ASP.NET 4.5 中的一个新功能,将我的 Product
业务对象直接绑定到 FormView
控件。我所需要做的就是指定 ItemType
和 SelectMethod
属性来绑定用于读取操作的数据。ItemType
是被绑定的类的限定名称。SelectMethod
是代码隐藏中的 public
方法,它将返回要呈现的业务对象(在本例中为 Product
)。请注意,我正在使用 Item
关键字绑定到 Product
。这将创建一个单向绑定,类似于我们使用 Eval
关键字的方式。还有一个 BindItem
关键字可用,它执行我们熟悉的双向绑定,即 Bind
关键字给我们的。
让我们看看 GetProduct
方法
public static readonly List<product> ProductList = new List<product>()
{
new Product
{
Id=1,
Name="Chess",
Description="The classic game - you know... Chess!",
Price=9.99M
}
};
public Product GetProduct([FriendlyUrlSegments]int? id)
{
if (id == null)
return null;
return ProductList.FirstOrDefault(p => p.Id == id.Value);
}
现在我们看到了当 WebForm 呈现时,我的 FormView
准备好绑定数据时,FriendlyUrlSegment
s 值提供程序是如何被使用的。我不需要费心事件时序、回发或视图状态。当 FormView
准备好呈现时,WebForm 将适当地从 FriendlyUrl
传递参数作为输入参数。在这种情况下,我最终得到一个简单的网页,它告诉我关于 Chess
产品的信息
摘要
在本文中,我们介绍了 ASP.NET WebForms 中 FriendlyUrl
的概念。我向您展示了如何从格式化的 URL string
中检索数据,以便使用它。我们还简要介绍了 ASP.NET 4.5 中的 ValueProvider
s,并使用 FriendlyUrl
s 属性和一些标准 FormView
上的声明式数据绑定来呈现一些数据。
下次,我们将深入研究 ASP.NET 4.5 中的 ValueProvider
s 和 ModelBinding
。