[asp.net-mvc-3] 현재 컨트롤러보기

View - _Edit사는 사람이 News M/V/C있습니다.

V/Mvia를 다음 CategoryController과 같이 재사용합니다 .

return PartialView("/Views/News/_Edit.cshtml", model);

어떻게에서 내 View - _Edit나는 컨트롤러 이름을 알릴 수 있습니까?

내가 할 때 :

alert('@ViewContext. RouteData.Values["controller"].ToString()');

값은 다음과 같습니다. News
그러나 URL은 다음과 같습니다./Category/foobar

가치 'Category'를 알리는 방법이 있습니까? 감사



답변

나는 이것을 부분적으로 본다.

@HttpContext.Current.Request.RequestContext.RouteData.Values["controller"].ToString()

동일한 상황에서 설명하고 부분 뷰의 실제 위치 대신 URL (범주, 제품)에 설명 된 컨트롤러를 보여줍니다.

대신이 경고를 사용하십시오.

alert('@HttpContext.Current.Request.RequestContext.RouteData.Values["controller"].ToString()');


답변

나는 이것을 이렇게하지만 아마도 ASP.NET MVC 4 일 것입니다.

@ViewContext.RouteData.Values["controller"]


답변

모든 컨트롤러에 대한 기본 클래스를 작성하고 여기에 name 속성을 넣으십시오.

public abstract class MyBaseController : Controller
{
    public abstract string Name { get; }
}

보기

@{
    var controller = ViewContext.Controller as MyBaseController;
    if (controller != null)
    {
       @controller.Name
    }
}

컨트롤러 예

 public class SampleController: MyBaseController
    {
      public override string Name { get { return "Sample"; }
    }


답변

View에서 현재 컨트롤러 이름을 얻는 다른 방법

@ViewContext.Controller.ValueProvider.GetValue("controller").RawValue


답변

그냥 사용하십시오 :

ViewContext.Controller.GetType().Name

이것은 당신에게 컨트롤러의 전체 이름을 줄 것입니다


답변

폴더 에서를 CategoryController로드하더라도 여전히 컨텍스트에 있습니다 .PartialViewViews/News


답변

아래 코드 중 하나를 사용하여 컨트롤러 이름을 얻을 수 있습니다

@HttpContext.Current.Request.RequestContext.RouteData.Values["controller"].ToString();

MVC 3을 사용하는 경우 사용할 수 있습니다

@ViewContext.Controller.ValueProvider.GetValue("controller").RawValue