我有一个WebSharper网站,我希望它在移动设备上有一个不同的UI。我希望服务器响应不同的HTML取决于用户是否在移动设备上。我可以看到如何检查用户是否在ASP.NET中的移动设备上,但我不知道如何将其移植到WebSharper。
发布于 2016-01-18 14:02:40
Context对象在WebSharper中有一个包含原始上下文的Environment字典。你可以通过这个联系到Request.Browser.IsMobileDevice。使用UI.Next客户端-服务器模板,您可以这样做:
module Site
open WebSharper
open WebSharper.Sitelets
open WebSharper.UI.Next
open WebSharper.UI.Next.Server
type EndPoint =
| [<EndPoint "/">] Home
open WebSharper.UI.Next.Html
type Page = { Desktop: Doc; Mobile: Doc }
let mkPage desktop mobile = { Desktop = desktop; Mobile = mobile }
let HomePage =
mkPage
<| h1 [text "Desktop page!"]
<| h1 [text "Mobile page!"]
let PickPage (ctx : Context<_>) page =
let context = ctx.Environment.["HttpContext"] :?> System.Web.HttpContextWrapper
if context.Request.Browser.IsMobileDevice then page.Mobile
else page.Desktop
|> Content.Page
[<Website>]
let Main =
Application.MultiPage (fun ctx endpoint ->
match endpoint with
| EndPoint.Home -> PickPage ctx HomePage
)https://stackoverflow.com/questions/34733814
复制相似问题