현재 컨트롤러보기


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.