I have a View - _Edit
which lives in News M/V/C
.
I reuse the V/M
via the CategoryController
as:
return PartialView("/Views/News/_Edit.cshtml", model);
How from within the View - _Edit
can I alert the controller name?
When I:
alert('@ViewContext. RouteData.Values["controller"].ToString()');
The Value is: News
However, the URL is: /Category/foobar
Is there a way to get the value 'Category'
to alert? thanks
This question is related to
asp.net-mvc-3
Create base class for all controllers and put here name attribute:
public abstract class MyBaseController : Controller
{
public abstract string Name { get; }
}
In view
@{
var controller = ViewContext.Controller as MyBaseController;
if (controller != null)
{
@controller.Name
}
}
Controller example
public class SampleController: MyBaseController
{
public override string Name { get { return "Sample"; }
}
You are still in the context of your CategoryController
even though you're loading a PartialView
from your Views/News
folder.
You can use any of the below code to get the controller name
@HttpContext.Current.Request.RequestContext.RouteData.Values["controller"].ToString();
If you are using MVC 3 you can use
@ViewContext.Controller.ValueProvider.GetValue("controller").RawValue
Other way to get current Controller name in View
@ViewContext.Controller.ValueProvider.GetValue("controller").RawValue
Just use:
ViewContext.Controller.GetType().Name
This will give you the whole Controller's Name
I do it like this, but perhaps it's only ASP.NET MVC 4
@ViewContext.RouteData.Values["controller"]
Source: Stackoverflow.com