簡體   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