tabla - pasar el parámetro del método de acción a ActionFilterAttribute en asp.net mvc
mostrar datos de una tabla en mvc (2)
Sobre la base de la respuesta de @Pankaj y los comentarios de @csetzkorn:
Usted pasa el nombre del parámetro como una cadena y luego verifica el filterContext
public class NewAuthoriseAttribute : ActionFilterAttribute
{
public string IdParamName { get; set; }
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
if (filterContext.ActionParameters.ContainsKey(IdParamName))
{
var id = filterContext.ActionParameters[IdParamName] as Int32?;
}
}
}
[NewAuthorizeAttribute(IdParamName = "fooId")]
public ActionResult Index(int fooId)
{ ... }
Sé que puedo usar el filterContext para llegar a él. Sin embargo, esto no es muy flexible si el parámetro del método de acción tiene un nombre diferente. Esto debería funcionar:
[HttpGet]
[NewAuthoriseAttribute(SomeId = id)]
public ActionResult Index(int id)
{
...
public class NewActionFilterAttribute : ActionFilterAttribute
{
public int SomeId { get; set; }
...
pero no lo hace (ni siquiera compila). ¿Algunas ideas?
Editar
Estoy asumiendo que usted está buscando hacer el nombre de Alias de Parámetro. Esto le brinda la flexibilidad de tener múltiples alias de su nombre de parámetro.
ActionParameterAlias.ParameterAlias Overloads
Si es así, puedes dar un alias como abajo.
[ParameterAlias("Original_Parameter_Name",
"New_Parameter_Name")]
[ParameterAlias("Original_Parameter_Name",
"New_Parameter_Name1")]
[ParameterAlias("Original_Parameter_Name",
"New_Parameter_Name2")]
[ParameterAlias("Original_Parameter_Name",
"New_Parameter_Name3")]
public ActionResult ActionMethod (Model ParameterValue) {return View (ParameterValue); }
Mensaje original
Prueba este.
Atributo
public class NewAuthoriseAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
if (filterContext.ActionParameters.ContainsKey("id"))
{
var id = filterContext.ActionParameters["id"] as Int32?;
}
}
}
Método de acción
Asegúrese de establecer el tipo de parámetro anulable para evitar el bloqueo de tiempo de ejecución.
[NewAuthoriseAttribute]
public ActionResult Index(Int32? id)
{
}