asp.net – MVC区域路由 – 带文件夹的控制器文件夹
目前我有一个像这样的文件夹结构:
Area (folder) - Toolkit (folder) - Controllers (folder) - AdminController.cs - Views (folder) - Admin (folder) - Privledges (folder) - Create.cshtml - Edit.cshtml - Delete.cshtml 这转化为 /Toolkit/{controller}/{action}/{tool}/{id} 将操作设置为像控制器那样基于字符串{tool}参数和传递给操作的参数{id}来提供视图是不是一种不好的做法? 实现我所说的: private const string FOLDER_PRIVILEGES = "./Privileges/"; public ActionResult Privileges(string tool,string id = "") { dynamic viewModel = null; ToolViews view; // enum for the views // Parse the tool name to get the enum representation of the view requested bool isParsed = Enum.TryParse(tool,out view); if (!isParsed) { return HttpNotFound(); } switch (view) { case ToolViews.Index: viewModel = GetIndexViewModel(); // call a function that gets the VM break; case ToolViews.Edit: viewModel = GetEditViewModelById(int.Parse(id)); // sloppy parse break; default: viewModel = GetIndexViewModel(); break; } // The folder path is needed to reach the correct view,is this bad? // Should I just create a more specific controller even though it would // require making about 15-20 controllers? return View(FOLDER_PRIVILEGES + tool,viewModel); } 当我编写View时,我必须确保路径名用于该文件夹 @Html.ActionLink("Edit","./Toolkit/Admin/Priveleges/Edit","Admin",new { id = item.id }) 这似乎是一种不好的做法,因为如果文件夹结构发生变化,则需要大量维护. 但是,如果我必须将操作分解为控制器,那么它们中就会有很多(随着时间的推移,将近20个添加更多). 如果我正在做的是一个不好的做法,那么为这样的路线提供服务的最佳方式是什么? /Toolkit/Admin/Privileges/Edit/1 我想避免做以下事情: /Toolkit/Admin/CreatePrivileges/1 /Toolkit/Admin/EditPrivileges/1 /Toolkit/Admin/DeletePrivileges/1 如果我没有任何意义,请告诉我,因为我很难将这个问题用语言表达. 解决方法
我认为你试图强制一个违反其原始意图的MVC惯例.
使用MVC,您的控制器是名词,您的动作是动词.使用您的示例,您有: >工具包(名词) – 区域 > Admin(名词?) – 子区域? < - 这是一个有点时髦的 >特权(名词) – 控制器 >创建(动词) – 动作 如您所见,如果您可以将Toolkit Admin视为区域子区域,或将它们组合到一个区域(TookitAdmin),它将使您回到控制器和操作的最初目的. 根据评论,听起来你可能已经决定采用这种方式.但我想指出,你以一种全面的方式得出的结论是回到MVC的根源. 作为旁注,您是否考虑过转向MVC4?它的Web API为RESTful API提供了更好的支持,听起来你可能会尝试这样做. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – MVC AntiForgeryToken重用以前生成的令牌
- asp.net-mvc – Web路由如何工作?
- ASP.NET导出到Excel – 锁定单元格
- asp.net-mvc – 部署的ASP.NET MVC 4项目不会运行
- 在asp.net.mvc中,什么是正确的方法来引用css内的图像
- 一步一步创建ASP.NET MVC5程序[Repository+Autofac+Automap
- 加快ASP.NET中的构建时间
- asp.net – 使加密字符串的长度与输入字符串相同?
- Asp.net网站首先启动非常慢
- asp.net-mvc – 在VS2013中将Azure单点登录添加到现有的MVC
- asp.net-mvc – 在MVC中处理重复表单的最佳方法是
- asp.net-mvc – 在数据库中存储ASP.Net MVC视图
- 【.Net码农】认识ASP.NET MVC的5种Authorization
- ASP.NET从内存而不是从文件中流内容
- asp.net-mvc – 在mvc中以MM / dd / YYYY格式验证
- ASP.NET Base-64字符串中的字符无效
- asp.net – 将网站置于维护模式?
- asp.net-mvc – ASP.NET MVC2成员:如何获取已登
- asp.net-mvc – MVC4 SimpleMemberhip’提供商遇
- asp.net – 如何跟踪Linq-to-sql DataContext上的