gpt4 book ai didi

asp.net-mvc - .NET MVC是否具有强类型的RedirectToAction?

转载 作者:行者123 更新时间:2023-12-03 12:27:27 25 4
gpt4 key购买 nike

由于我决定暂时不使用RC,而现在仍然使用Beta,因此我无法知道是否已添加强类型的RedirectToAction。有人尝试过吗,RC中是否有强类型的RedirectToAction(也许还有ActionLink)?

最佳答案

不,不是。

protected RedirectToRouteResult RedirectToAction<T>(Expression<Action<T>> action, RouteValueDictionary values) where T : Controller
{
var body = action.Body as MethodCallExpression;

if (body == null)
{
throw new ArgumentException("Expression must be a method call.");
}

if (body.Object != action.Parameters[0])
{
throw new ArgumentException("Method call must target lambda argument.");
}

string actionName = body.Method.Name;

var attributes = body.Method.GetCustomAttributes(typeof(ActionNameAttribute), false);
if (attributes.Length > 0)
{
var actionNameAttr = (ActionNameAttribute)attributes[0];
actionName = actionNameAttr.Name;
}

string controllerName = typeof(T).Name;

if (controllerName.EndsWith("Controller", StringComparison.OrdinalIgnoreCase))
{
controllerName = controllerName.Remove(controllerName.Length - 10, 10);
}

RouteValueDictionary defaults = LinkBuilder.BuildParameterValuesFromExpression(body) ?? new RouteValueDictionary();

values = values ?? new RouteValueDictionary();
values.Add("controller", controllerName);
values.Add("action", actionName);

if (defaults != null)
{
foreach (var pair in defaults.Where(p => p.Value != null))
{
values.Add(pair.Key, pair.Value);
}
}

return new RedirectToRouteResult(values);
}

那应该工作。

关于asp.net-mvc - .NET MVC是否具有强类型的RedirectToAction?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/525986/

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