0

我希望创建一个 MVC 4 项目,该项目需要能够支持 URL 重写以及根据设备(例如台式电脑、手机或平板电脑)返回和呈现不同视图的能力。

例如;

网址重写

基本上对于每个视图而不是产品(通过 ID 显示数据),我希望 URL 读取类似 www.mydomain.com/my-product-name/ 而不是 www.mydomain.com/产品视图/?id=12345

响应式移动设计

因此,当访问页面 www.mydomain.com/my-product-name/ 时,我希望返回的视图是设计为在桌面浏览器上运行的视图(如果这是客户端请求)。或者,如果在手机上,基本视图被削减。

谁能提供任何示例或有用的文档以供参考?

4

2 回答 2

2

显然,您根本没有对 MVC4 做太多阅读,因为您提到的内容是 MVC4 的关键特性。

首先,MVC4 不需要 URL 重写。它使用您想要的开箱即用的友好 url,无需重写。

其次,MVC4 使用移动模板,允许您为不同的移动设备定义不同的视图,它会根据查看它的设备自动选择正确的视图。

我建议您阅读以下内容:

http://www.asp.net/mvc/tutorials/mvc-4/aspnet-mvc-4-mobile-features

于 2013-08-18T20:51:03.667 回答
0

1. 对于友好的 URL:

不需要Url-Rewriting,一个Route就足够了:

routes.MapRoute(
    "ProductPage", // Route Name
    "{product*}", // Url Pattern
    new { controller = "Products", action = "Info", product = UrlParameter.Optional},
);

http://www.asp.net/mvc/tutorials/older-versions/controllers-and-routing/asp-net-mvc-routing-overview-cs

2. 对于每个设备的自定义视图:

引入的 MVC 4Display Mode Provider允许您根据您选择从 HTTP 请求中提取的任何标准来确定要使用的视图文件,例如:

DisplayModeProvider.Instance.Modes.Add(new DefaultDisplayMode("iPad")
    {
    ContextCondition = (context => context.Request.UserAgent.Contains("ipad"))
    });

请参阅http://msdn.microsoft.com/en-us/magazine/dn296507.aspx

于 2013-08-18T20:58:56.007 回答