学习mvc并构建一个完整的电子商务应用程序。
管理员应该能够添加任何他们喜欢的内容。
让我们举一个例子雇员。
我添加了一个名为“Admin”的区域。在管理员中我有员工 在这里,管理员应该能够添加 - 编辑有关员工的信息。
现在在用户部分,用户不应该添加-edit.etc ..
在他们那一刻,我有2个控制器?
这对我来说似乎不对。你怎么处理这样的代码重复? 我想只有一个控制器。在这种情况下你如何构建你的mvc应用程序?
我可以下载的任何例子吗? 寻找一个很好的例子,你可以看到工作和动态运行主题的区域等。
感谢任何建议
答案 0 :(得分:1)
您可以使用单个~/Controllers/EmployeesController
控制器来处理应用程序中的Employee
资源。在此控制器中,需要管理(或某些登录用户)权限的操作可以使用[Authorize]
属性进行修饰,方法是指定所需的角色以执行此操作:
public class EmployeesController: Controller
{
// Anyone can list employees, even anonymous users
public ActionResult Index()
{
IEnumerable<Employee> employees = _repository.GetEmployees();
return View(employees);
}
public ActionResult Show(int employeeId)
{
Employee employee = _repository.GetEmployee(employeeId);
return View(employee);
}
// Only administrators can update employees
[Authorize(Roles = "admin")]
[HttpPost]
public ActionResult Update(Employee employee)
{
_repository.Update(employee);
return RedirectToAction("Index");
}
// Only administrators can delete employees
[HttpDelete]
[Authorize(Roles = "admin")]
public ActionResult Destroy(int employeeId)
{
_repository.Delete(employeeId);
return RedirectToAction("Index");
}
... and some other actions following the Simply RESTful pattern:
http://mvccontrib.codeplex.com/wikipage?title=SimplyRestfulRouting
}
答案 1 :(得分:1)
我正在尝试这样做,以便您可以使用身份验证并拥有漂亮的网址: /管理/员工 /公司简介/雇员
在/ Controllers / EmployeeController中只有一个控制器怎么样?您可以在需要身份验证的任何方法上设置[授权]属性,并使用自定义路由控制网址吗?
routes.MapRoute( _
"Admin_Employee", _
"Admin/{controller}/{action}/{id}", _
New With {.controller = "Employee", .action = "Index", .id = UrlParameter.Optional} _
)
routes.MapRoute( _
"AboutUs_Employee", _
"Aboutus/{controller}/{action}/{id}", _
New With {.controller = "Employee", .action = "Details", .id = UrlParameter.Optional} _
)