首页新闻找找看学习计划

ASP.NET MVC 里面怎么动态加载出 Area

0
悬赏园豆:200 [待解决问题]

例如我数据库里面有个133的ID,然后在Area下面写了一个133的目录,而这个目录是不在VS里面编译的,直接通过请求URL之后再进行注册及编

译。

mvc 都是在 Application_Start 的时候进行编译及注册的,不能事后再进行注册。

mvc 都是在启动的时候注册的,不能在每个ID访问之后,再判断注册。

吃货一枚丶的主页 吃货一枚丶 | 初学一级 | 园豆:2
提问于:2013-10-20 21:40
< >
分享
所有回答(5)
0

好深奥

angelshelter | 园豆:9676 (大侠五级) | 2013-10-20 21:44
0

要用到vc内部的功能吧。

jone_e | 园豆:1410 (小虾三级) | 2013-10-21 09:04
0

动态路由吧,重新定义一下你的路由表

public override void RegisterArea(AreaRegistrationContext context)
{
    context.MapRoute(
        "SoccerTournament_default",
        "{myarea}/{controller}/{action}/{id}", 
        new { controller = "Home", action = "Index", id = UrlParameter.Optional },
        new { myarea= new myareaId() },
        new string[] { "Mvc3AreaTest1.Areas.myarea.Controllers" }
    );
}

然后在myareaId里面实现路由约束。

Bce | 园豆:381 (菜鸟二级) | 2013-10-21 09:11
0

执行一个方法。

AreaRegistrationContext content = new AreaRegistrationContext(Id.ToString(), System.Web.Routing.RouteTable.Routes);
content.Routes.MapRoute("", "");
AreaRegistration.RegisterAllAreas();

 content.Routes.MapRoute("", "")这里设置注册的一些路由,参考Global.asax.cs配置下就可以了。

````` | 园豆:14268 (专家六级) | 2013-10-21 10:59

但是你这个必须要在 Application_Start 里面的,而且如果数据库新建一个新的ID,就找不到了。

而且Areas 里面的目录是不放在VS里面编译的。后台新建一个ID,然后人工的在 Areas 下面建一个目录就可以访问了,需要这样的。

支持(0) 反对(0) 吃货一枚丶 | 园豆:2 (初学一级) | 2013-10-21 16:11

@吃货一枚丶: 这个并不需要在Application_Start   直接在代码中调用下就行了。目的就是注册模块到RouteTable.Routes里。

支持(0) 反对(0) ````` | 园豆:14268 (专家六级) | 2013-10-21 16:13
0
 return View("~/Areas/SmartExam/Views/Admin/Question/Operate.cshtml");

直接返回View的绝对地址就可以了

usday | 园豆:219 (菜鸟二级) | 2013-10-23 17:24
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册