2013-05-23 5 views
1

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); 
     } 
... 
+0

당신이 코드의 샘플을 게시하시기 바랍니다 수있는, 내가 무엇을 목표 – GibboK

+0

:-) 답변을 받아 기쁠 달성하고 싶습니까? 일반적으로, 당신은 이것을해서는 안됩니다. –

+2

쿼리 문자열은 * 컨트롤러 *가 처리하는 * 요청 *의 일부입니다. 요청 자체는 변경할 수 없습니다. 진짜 질문은 무엇을 성취하려고 하는가하는 것입니다. – Maarten

답변

0

'MVC 스타일'대신 'webforms 스타일'로 뭔가를하려는 것 같습니다.

MVC의 기본 템플릿은 URL에 ID를 지정할 수 있도록 설정됩니다. 예를 들어/Home/User/1은 ID = 1을 제공합니다. 'webforms'URL은 /users.aspx?id=1과 같았을 것입니다.

그래서 내 생각 엔 그냥 offcourse 다른 무언가 할 수있는 방법의

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

실제 이름과 같은 ActionMethod를 작성해야한다는 것입니다. 그러나 중요한 점은 ID 매개 변수가 MVC 프레임 워크에 의해 자동으로 설정된다는 것입니다.

1

리디렉션은 어떻게됩니까?

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'

+0

이 오류가 발생합니다. 메서드 또는 작업이 requestContext.HttpContext.Response.RedirectToRoute에 구현되지 않았습니다. – GibboK

+0

당신은 이걸로 무엇을 이루고 싶습니까? 그리고 우리는 당신에게 asp.net MVP 패러다임에있을 솔루션을 제공합니다. –

+0

컨트롤러 메서드에 대한 호출을 위해 쿼리 문자열을 미리 추가해야합니다. 쿼리 문자열은 항상 나타납니다. – GibboK

관련 문제