gpt4 book ai didi

asp.net-mvc-4 - 自定义 Controller 上下文

转载 作者:行者123 更新时间:2023-12-02 00:04:43 27 4
gpt4 key购买 nike

有没有一种方法可以创建一个自定义的 ControllerContext 来将现有的 ControllerContext 包装在 mvc 中?

这是我想要完成的...

出于记录目的,我们需要记录 Controller 名称、操作名称和页面名称。我们现在从 ControllerContext 对象中获取这些值。

我创建了一个静态类来获取日志类的值,对此我不是很感兴趣。

public static class ControllerContextHelper
{
public static string GetControllerName(ControllerContext context)
{
string result = String.Empty;
if (context.RouteData.Values.ContainsKey("controller"))
{
result = context.RouteData.Values["controller"].ToString();
}
return result;
}

public static string GetActionName(ControllerContext context)
{
string result = String.Empty;
if (context.RouteData.Values.ContainsKey("action"))
{
result = context.RouteData.Values["action"].ToString();
}
return result;
}

public static string GetPageName(ControllerContext context)
{
string result = String.Empty;
if (context.RouteData.Values.ContainsKey("page"))
{
result = context.RouteData.Values["page"].ToString();
}
return result;
}
}

我更愿意将此逻辑放在 ControllorContext 对象中,这样我就不需要“Helper”类来为我做这件事。

最佳答案

您可以为此使用扩展方法

public static class ControllerExtensions
{
public static string GetControllerName(this ControllerContext context)
{
return GetRouteDataValue("controller", context);
}

public static string GetActionName(this ControllerContext context)
{
return GetRouteDataValue("action", context);
}

public static string GetPageName(this ControllerContext context)
{
return GetRouteDataValue("page", context);
}

private static string GetRouteDataValue(string key, ControllerContext context)
{
string value = String.Empty;
if (context.RouteData.Values.ContainsKey(key))
{
value = context.RouteData.Values[key].ToString();
}
return value;
}
}

并且在您的 Controller 中或任何有可用 Controller 的地方,您都可以调用扩展方法

public ActionResult Attempt()
{
var actionName = ControllerContext.GetActionName();
return View();
}

关于asp.net-mvc-4 - 自定义 Controller 上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19138490/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com