繁体   English   中英

如何在控制器中分配查询字符串?

[英]How to assign a query string in a controller?

使用MVC 3 Asp.Net,我想在控制器中的任何方法上添加默认查询字符串。

使用以下代码,在第QueryString.Add()行出现错误:

Collection is read only.

知道如何解决它,或者您知道如何将查询字符串追加到控制器方法的更好方法吗? 请发表代码示例感谢。

   public class HomeController : Controller
    {

        protected override void Initialize(RequestContext requestContext)
        {
            // Add the User's ID if is not present in the request
            string user = requestContext.HttpContext.Request.QueryString["UniqueStudentReference"];
            if (user == null)
            {

                string userId = Various.GetGivenNameUser();
                System.Web.HttpContext.Current.Request.QueryString.Add("UniqueStudentReference", userId);
            }

                base.Initialize(requestContext);
        }
...

重定向呢?

    protected override void Initialize(RequestContext requestContext)
    {
        // Add the User's ID if is not present in the request
        string user = requestContext.HttpContext.Request.QueryString["UniqueStudentReference"];
        if (user == null)
        {

            string userId = Various.GetGivenNameUser();

            requestContext.HttpContext.Response.RedirectToRoute(new { UniqueStudentReference = userId });
        }

        base.Initialize(requestContext);
    }

只需添加查询字符串参数“ UniqueStudentReference”,即可重定向到同一路由

看起来您正在尝试以“ Webforms样式”而不是“ MVC样式”进行操作。

设置了MVC的默认模板,以便您可以在URL中指定ID,例如/ Home / User / 1将为您提供ID = 1。 “ webforms” URL可能类似于/users.aspx?id=1。

所以我的猜测是,您只需要创建一个像

public ViewResult User(int id)
{
    return View(userRepository.Find(id)); // example where you're using EntityFramework
}

该方法的实际名称可能与其他方法有所不同。 但是重要的是ID参数将由MVC框架自动设置。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM