현재 컨트롤러보기


127

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'를 알리는 방법이 있습니까? 감사


당신은 없어 NewsController?
사냥꾼

method로드중인 작업 partialview과 존재 하는 내용 controller을 게시하십시오 method.
hunter

답변:


193

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

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

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

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

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

25
Palpie의 아래 답변은 (기억하기 쉬운) 지름길입니다.@ViewContext.RouteData.Values["controller"]
Laoujin

6
참고로, 당신은 얻을 필요가 없습니다 HttpContext.Current. Request직접 사용할 수 있습니다.
Serj Sagan

네임 스페이스를 포함한 전체 컨트롤러 클래스 이름을 얻을 수 있습니까? 또한 뷰 이름을 표시 할 수 있으면 좋을 것입니다.
Johncl

3
btw, ["action"]액션 메소드의 이름을 원하면 작동합니다.
Zapnologica

117

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

@ViewContext.RouteData.Values["controller"]

12
솔루션은 현재 실행중인 컨트롤러를 반환합니다. 따라서 브라우저가 ControllerA를 요청하고 ControllerA가 ControllerB에서 부분보기를 렌더링하면 솔루션은 ControllerB의 이름을 리턴하고 Nicholas Sizer 솔루션은 ControllerA의 이름을 리턴합니다.
Thomas CG de Vilhena

최상의 답변으로 받아 들여 져야합니다. 이것은 여전히 ​​ASP.NET Core 2.2에서 작동합니다
Tom

21

모든 컨트롤러에 대한 기본 클래스를 작성하고 여기에 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"; } 
    }

Name속성 설정 방법을 설명해주세요 .
ErikE


5

그냥 사용하십시오 :

ViewContext.Controller.GetType().Name

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


2

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


0

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

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

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

@ViewContext.Controller.ValueProvider.GetValue("controller").RawValue
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.