ASP.NET 中 RouteData.GetRequiredString 的等价物 5
Equivalent of RouteData.GetRequiredString in ASP.NET 5
我有几个用于创建导航栏按钮的 HtmlHelper 扩展方法 - 一个用于上下文相关的帮助 link。在我的扩展方法中,我需要知道当前控制器的名称和操作,例如:
var currentAction = htmlHelper.ViewContext.RouteData.GetRequiredString("action");
var currentController = htmlHelper.ViewContext.RouteData.GetRequiredString("controller");
由于 RouteData 上不再有 GetRequiredString() 方法,我可以在 ASP.NET 5 中使用什么来获取此信息?
您可以自己创建一个扩展程序。
namespace Microsoft.AspNet.Mvc
{
public static class HelperExtensions
{
public static string GetRequiredString(this RouteData routeData, string keyName)
{
object value;
if(!routeData.Values.TryGetValue(keyName, out value))
{
throw new InvalidOperationException($"Could not find key with name '{keyName}'");
}
return value?.ToString();
}
}
}
我有几个用于创建导航栏按钮的 HtmlHelper 扩展方法 - 一个用于上下文相关的帮助 link。在我的扩展方法中,我需要知道当前控制器的名称和操作,例如:
var currentAction = htmlHelper.ViewContext.RouteData.GetRequiredString("action");
var currentController = htmlHelper.ViewContext.RouteData.GetRequiredString("controller");
由于 RouteData 上不再有 GetRequiredString() 方法,我可以在 ASP.NET 5 中使用什么来获取此信息?
您可以自己创建一个扩展程序。
namespace Microsoft.AspNet.Mvc
{
public static class HelperExtensions
{
public static string GetRequiredString(this RouteData routeData, string keyName)
{
object value;
if(!routeData.Values.TryGetValue(keyName, out value))
{
throw new InvalidOperationException($"Could not find key with name '{keyName}'");
}
return value?.ToString();
}
}
}