Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用不同页面处理选项卡中的子选项卡-asp.net mvc 3_C#_Asp.net Mvc 3_Tabs - Fatal编程技术网

C# 使用不同页面处理选项卡中的子选项卡-asp.net mvc 3

C# 使用不同页面处理选项卡中的子选项卡-asp.net mvc 3,c#,asp.net-mvc-3,tabs,C#,Asp.net Mvc 3,Tabs,我正在自学asp.NETMVC3。 我想创建一个用户帐户页面,其中有3个选项卡-说你的地址,你的照片和你的个人资料 第三个选项卡(YourProfile)中还有两个子选项卡。。。更改详细信息和DeactiaveAccount 它们都是动态页面,因此我希望将它们作为单独的页面保留 基本上,URL是: localhost/MyHome/YourAddress localhost/MyHome/YourPhotos localhost/MyHome/YourProfile/ChangePassword

我正在自学asp.NETMVC3。 我想创建一个用户帐户页面,其中有3个选项卡-说你的地址,你的照片和你的个人资料

第三个选项卡(YourProfile)中还有两个子选项卡。。。更改详细信息和DeactiaveAccount

它们都是动态页面,因此我希望将它们作为单独的页面保留

基本上,URL是:

localhost/MyHome/YourAddress
localhost/MyHome/YourPhotos
localhost/MyHome/YourProfile/ChangePassword
localhost/MyHome/YourProfile/DeactivateAccount
(根据要求,我已将通用的tab1、tab2等更改为现实场景中的某些内容)

我打算这样做:

public class MyHomeController : Controller
    {
        //
        // GET: /MyHome/Tab1

        public ActionResult Tab1()
        {
            return View();
        }

        //
        // GET: /MyHome/Tab2

        public ActionResult Tab2()
        {
            return View();
        }

        //
        // GET: /MyHome/Tab3

        public ActionResult Tab3()
        {
            return View();
        }
    }
如何处理您个人资料的子选项卡?如何在控制器中调用控制器

实现这一目标的最佳方式是什么


感谢您为控制器中的每个选项卡项提供单独的操作方法

public class MyHomeController : Controller
{
  public ActionResult YourAddress()
  {
     return View();
  }
  public ActionResult YourPhotos()
  {
     return View();
  }
  public ActionResult YouProfile()
  {
     return VieW();
  }
  public ActionResult ChangePassword()
  {
     return View();
  }
  public ActionResult DeActivate()
  {
     return View();
  }
}
对于子选项卡内容,请在global.asax中定义该路由

routes.MapRoute("ChangePass","YourProfile/ChangePassword", 
                      new { controller="MyHome", action="ChangePassword" });
routes.MapRoute("DeActivate","YourProfile/DeActivate", 
                      new { controller="MyHome", action="DeActivate" });
routes.MapRoute(
           "Default", 
           "{controller}/{action}/{id}", 
           new { controller = "Home", action = "Index", id = UrlParameter.Optional });
始终使用
Url.Action
Html帮助程序方法来呈现操作方法的路径

<div id="tabs"> 
    <ul> 
        <li><a href="@Url.Action("YourAddress","MyHome")">Address</a></li>
        <li><a href="@Url.Action("YourPhotos","MyHome")">Photos</a></li>
    </ul>
</div>


您能否提供一个真实的场景,这些选项卡将具有什么功能?请使用jquery。这里有一个例子@Tripping:如果功能完全不同,我会使用区域来判断。(例如:普通用户Ecom portal和管理员用户Ecom portal)谢谢@shyju。。。工作起来很有魅力,但当我点击链接时,我仍然不明白路由是如何工作的。那很好。。。我被Html.action弄糊涂了。我可以看到这个控制器变得很胖,不管怎样,是不是要破坏它?i、 e.
ProfileController
PhotoController
等@LukeHutton:完全同意。随着它的成长,我一定会把它分开。我坚信保持身材苗条。我试图向OP展示的要点是将这些方法保持在单独的服务层中,并仅从控制器操作调用它。