如何使用ActionFilterAttribute将查询字符串添加到URL?

时间:2013-05-24 06:14:07

标签: c# asp.net-mvc asp.net-mvc-3

使用asp.net MVC 3,我想在Controller的方法的每个请求上添加一个查询字符串,使用以下代码,查询字符串没有被添加到URL。

知道我做错了什么或任何其他替代方法?

  public ActionResult Index(string uniquestudentreference)
    {
        return View(eventListVM);
    }

 public class UserAttribute : ActionFilterAttribute
    {
        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            filterContext.ActionParameters["uniquestudentreference"] = Various.GetGivenNameUser();
        }
    }

2 个答案:

答案 0 :(得分:1)

如果希望uniquestudentreference参数在控​​制器操作中具有值,则应该使用正确的URL调用控制器操作,如:

http://www.someurl.com/<controller>/Index/<uniquestudentreference>

如果您想影响通过网址传递信息的方式,您应该考虑自定义路线表(位于Global.asax

您可以在此处详细了解:http://www.asp.net/mvc/tutorials/older-versions/controllers-and-routing/asp-net-mvc-routing-overview-cs

答案 1 :(得分:0)

您要在此处执行的操作是将值设置为ActionResult中ControllerContext的ViewData或TempData,然后在方法中引用它。这是比querystring传递它更好的方法,也更安全(避免用户能够操纵值)。那或将值存储在Session中。