命名空间组织

时间:2014-04-30 10:39:39

标签: c# asp.net-mvc

Root    
    - Controllers 
               - CommonController 
                    namespace Nop.Web.Controllers
                    {
                      public partial class CommonController
                      {
                        ....
                       }
                   }

    - Areas (book)
            - Controllers
                        - CommonController
                            namespace Nop.Web.Controllers
                            {
                              public partial class CommonController
                              {
                                  public ActionResult LoginBox(...)
                                 {..}
                              }
                            }
            - View
                      - Common
                              - LoginBox.cshtml

现在,在区域图书的布局视图中,如何调用登录框

  

@ Html.Action(“LoginBox”,“Customer”)=> {“未找到路径'/ book'的控制器或未实现IController。”}

当然因为它没有确切的命名空间

  

@ Html.Action(“LoginBox”,“Customer”,new {area =“”})

=>确实进入控制器但找不到视图,因为它使用根命名空间来查找Loginbox视图的位置,这是一个错误的路径。

无论如何仍然可以保留Book区域中的loginbox.cshtml,但Common Controller可以共享其他API。

1 个答案:

答案 0 :(得分:0)

我认为你应该使用继承而不是部分类:

Root    
- Controllers 
           - CommonController 
                namespace Nop.Web.Controllers
                {
                  public class CommonController
                  {
                    ....
                   }
               }

- Areas (book)
        - Controllers
                    - CustomerController
                        namespace Nop.Web.Areas.Book.Controllers
                        {
                          public class CustomerController : CommonController
                          {
                              public ActionResult LoginBox(...)
                             {..}
                          }
                        }
        - View
                  - Customer
                          - LoginBox.cshtml

然后以下调用应该有效:

@Html.Action("LoginBox", "Customer")