[英]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.