Asp.net 如果桌面版本没有移动视图,则显示通用移动页面

Asp.net 如果桌面版本没有移动视图,则显示通用移动页面,asp.net,mobile,asp.net-mvc-4,Asp.net,Mobile,Asp.net Mvc 4,目前,我有一个桌面应用程序,它的一些视图可供移动设备使用。我添加了在桌面和移动版本之间切换的功能。然而,如果用户在一个没有手机版本的页面上切换到手机,就会发生一系列不好的事情。。。如果当前视图的移动版本不存在,是否有方法告诉MVC4转到“抱歉,这还没有在移动设备上实现”页面 谢谢 这就是我最后要做的。我创建了一个HasMobileVersion属性来修饰所有具有相应移动版本的视图方法。我没有显示“对不起”页面,而是将用户重定向到根URL(移动版本必须存在)。下面是它的代码: /// <su

目前,我有一个桌面应用程序,它的一些视图可供移动设备使用。我添加了在桌面和移动版本之间切换的功能。然而,如果用户在一个没有手机版本的页面上切换到手机,就会发生一系列不好的事情。。。如果当前视图的移动版本不存在,是否有方法告诉MVC4转到“抱歉,这还没有在移动设备上实现”页面


谢谢

这就是我最后要做的。我创建了一个HasMobileVersion属性来修饰所有具有相应移动版本的视图方法。我没有显示“对不起”页面,而是将用户重定向到根URL(移动版本必须存在)。下面是它的代码:

/// <summary>
/// This attribute specifies which views have Mobile versions available.
/// </summary>
[AttributeUsage(AttributeTargets.Method, AllowMultiple = false, Inherited = false)]
public class HasMobileVersionAttribute : ActionFilterAttribute
{

    #region << Constructors >>

    /// <summary>
    /// Default constructor.
    /// </summary>
    public HasMobileVersionAttribute()
    {
        // Nothing to do
    }

    #endregion

    #region << Overridden Methods >>

    /// <summary>
    /// Allows a View to switch between mobile and desktop versions, ensuring that if a page does not have a mobile version that
    /// it sends the user to the root page.
    /// </summary>
    /// <param name="ac">Request data.</param>
    public override void OnActionExecuting(ActionExecutingContext ac)
    {
        ac.Controller.ViewBag.HasMobileVersion = true;
    }

    #endregion

}

在移动端,mobile=false。

这就是我最后要做的。我创建了一个HasMobileVersion属性来修饰所有具有相应移动版本的视图方法。我没有显示“对不起”页面,而是将用户重定向到根URL(移动版本必须存在)。下面是它的代码:

/// <summary>
/// This attribute specifies which views have Mobile versions available.
/// </summary>
[AttributeUsage(AttributeTargets.Method, AllowMultiple = false, Inherited = false)]
public class HasMobileVersionAttribute : ActionFilterAttribute
{

    #region << Constructors >>

    /// <summary>
    /// Default constructor.
    /// </summary>
    public HasMobileVersionAttribute()
    {
        // Nothing to do
    }

    #endregion

    #region << Overridden Methods >>

    /// <summary>
    /// Allows a View to switch between mobile and desktop versions, ensuring that if a page does not have a mobile version that
    /// it sends the user to the root page.
    /// </summary>
    /// <param name="ac">Request data.</param>
    public override void OnActionExecuting(ActionExecutingContext ac)
    {
        ac.Controller.ViewBag.HasMobileVersion = true;
    }

    #endregion

}

在移动端,mobile=false。

你能澄清一下这些“坏东西”是什么吗?基本上,它会使用_Layout.mobile页面,然后将桌面版本的HTML粘贴到此布局中。。。至少可以说,这两个东西不是很兼容。你能澄清一下那些“坏东西”是什么吗?基本上,它会使用_Layout.Mobile页面,然后将桌面版本的HTML粘贴到这个布局中。。。至少可以这么说,这两个东西不是很兼容。你如何知道请求页面的浏览器是否是移动的,我在任何地方都看不到代码。这是一个单独的问题,但我在最后添加了它。你如何知道请求页面的浏览器是否是移动的,我在任何地方都看不到代码。这是一个单独的问题,但我把它加在了最后。
@Url.Action("SwitchView", "ViewSwitcher" , new { mobile = true, returnUrl = ViewBag.HasMobileVersion != null && ViewBag.HasMobileVersion ? Request.Url.PathAndQuery : "/" })