加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – ASP.NET MVC视图或URL应该有多少级别?

发布时间:2020-12-16 04:12:01 所属栏目:asp.Net 来源:网络整理
导读:我还在学习ASP.NET MVC.使用webforms,我会创建一个新文件夹,我们称之为管理员.在那里,我可能有很多页面用于create_product,edit_product等.所以URL可能看起来像 http://somesite.com/admin/create_product.aspx. 但是对于MVC来说,它有点不同.我试图看看这是
我还在学习ASP.NET MVC.使用webforms,我会创建一个新文件夹,我们称之为管理员.在那里,我可能有很多页面用于create_product,edit_product等.所以URL可能看起来像 http://somesite.com/admin/create_product.aspx.

但是对于MVC来说,它有点不同.我试图看看这是最好的方法.

做http://somesite.com/admin/product/create会对吗?或者应该只是http://somesite.com/product/create?如果我是第一种方式,我是否将所有内容都放在“admin”控制器中,还是应该将其分成“产品”控制器?

我知道这可能是主观或个人选择,但我想得到一些建议.

谢谢.

解决方法

ASP.NET MVC的一部分好处(更一般地说,.NET 3.5 SP1中所有ASP.NET共有的URL路由引擎)的特点是URL可以灵活配置为映射到您喜欢的任何文件夹/文件结构.这意味着在开始构建项目之后,比WebForms更容易修改URL.

针对您的具体问题:

>一个管理员控制器与产品控制器 – 通常,指导是保持控制器的重点,以便更容易测试和维护.出于这个原因,我建议在每个对象类型(如Product)中使用单个控制器和CRUD操作.你的案例中的例子:

/管理/产品/创建

/ admin / product / edit / 34或/ admin / product / edit / red-shoes(如果名称是唯一的)

在任何一种情况下,Create,Edit,Deatils操作都将在ProductController中.您可能只有“管理操作”(如“创建”和“编辑”)的自定义路由限制其使用(并将“管理”文本添加到URL),然后详细信息操作将可供您站点的所有访问者使用.
>保护管理员视图 – 使用MVC记住一个重要事实:所有请求都直接转到控制器,而不是视图.这意味着旧的“使用web.config保护目录”不适用于(通常)MVC以保护您的管理员.相反,您现在应该将安全性直接应用于控制器.这可以通过使用Controller类的属性轻松实现,例如:

> [授权] – 只检查用户是否已登录
> [授权(角色=“管理员”)] – 限制特定用户角色
> [授权(用户=“乔”)] – 限于特定用户

您甚至可以在站点中为“管理”视图创建自定义路由,并通过在URL路由中强制执行授权检查来限制对这些视图的访问,如下所示:

routes.MapRoute(
  "Admin","Admin/{controller}/{action}",new { controller = "Product",action = "Index" },new { authenticated= new AuthenticatedConstraint()}
);

AuthenticatedConstraint的位置如下:

using System.Web;
using System.Web.Routing;
public class AuthenticatedConstraint : IRouteConstraint
{
  public bool Match(HttpContextBase httpContext,Route route,string parameterName,RouteValueDictionary values,RouteDirection routeDirection)
  {
    return httpContext.Request.IsAuthenticated;
  }
}

有关Stephen Walther博客的详细信息:
ASP.NET MVC Tip #30 – Create Custom Route Constraints

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读