Ben*_*kel 18 razor asp.net-mvc-3
我使用以下代码在我的视图中获取当前的"操作",因为我想基于它自定义构建actionlink.
ViewContext.RequestContext.RouteData.Values("action")
Run Code Online (Sandbox Code Playgroud)
我的最终目标是使用Javascript构建一些动作链接,并且.js需要知道当前控制器和动作是什么,因为我希望它具有灵活性.我通过浏览框架找到了上述内容,但我不知道我是否找到了正确的东西.
即
var routeData = ViewContext.RequestContext.RouteData;
var linkStub = '/@routeData.Values("controller")/@routeData.Values("action")';
Run Code Online (Sandbox Code Playgroud)
有谁知道这是最简单/最直接的方法吗?
max*_*ego 27
最干净的方式是扩展方法
public static class MyUrlHelper
{
public static string CurrentAction(this UrlHelper urlHelper)
{
var routeValueDictionary = urlHelper.RequestContext.RouteData.Values;
// in case using virtual dirctory
var rootUrl = urlHelper.Content("~/");
return string.Format("{0}{1}/{2}/", rootUrl, routeValueDictionary["controller"], routeValueDictionary["action"]);
}
}
Run Code Online (Sandbox Code Playgroud)
Nec*_*ros 13
你可以从中得到路线数据RequestContext,但实际上并不重要(有多种方法).我不担心经历多个对象(可能只需要几微秒).您可以通过创建扩展方法(例如url helper)或使有问题的控件继承自定义实现所需的WebViewPage快捷方式来使代码更好.像那样:
public abstract class MyWebViewPage<TModel> : WebViewPage<TModel>
{
public string ControllerName
{
get
{
return Url.RequestContext.RouteData.Values["controller"].ToString();
}
}
public string ActionName
{
get
{
return Url.RequestContext.RouteData.Values["action"].ToString();
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
58050 次 |
| 最近记录: |