MVC 3

2011-04-27 5 views
5

에서 URL에 여러 매개 변수를 전달 나는 MVC 3

public ActionResult Facility(int id = 0, int contractId = 0) 

나는 그것이 잘 작동

/Registration/Facility/0?contractId=0 

같은 URL에서이 메소드를 호출

로 "등록"라고 컨트롤러의 액션 메소드가 있습니다. 내가 좋아하는 다른 방법에 URL을 위에 건설하려고 지금 때

return RedirectToAction("Facility/0?contractId="+ model.ContractId); 

그것은 브라우저의 URL이이

처럼 온다 잘 구축되지 않는 이
/Registration/Facility/0%3fcontractId%3d0 

사람이 무엇을 잘못 말해 주실 래요 작동하지 않습니다 나 여기 있니?

답변

11

이 시도 :

return RedirectToAction("Facility", new { id = 0, contractId = model.ContractId}); 

이 리디렉션에 대한 메서드 오버로드에 내장되어 있습니다 this answer

+0

감사 jao, 그것은했다. 하지만 내 코드가 작동하지 않는 이유를 말해 줄 수 있습니까? URL을 작성하는 데 New {....}를 사용해야한다는 규칙이 있습니까? – pramodtech

+3

메서드의 오버로드가 자동으로 이스케이프 처리되기 때문에 코드가 작동하지 않습니다. 및/문자가 없으므로 매개 변수를 전달하려는 경우 매개 변수를 허용하는 오버로드를 사용한다고 가정합니다. 매개 변수는 URL이 아니며 액션 이름입니다. –

+0

정확하게 마틴이 말한 내용 : – jao

1

참조하십시오. 당신이

return RedirectToAction("Facility", new { id = 0, contractId = model.ContractId }); 
0

를 원하는 값으로 익명 객체를 전달 아래처럼 매개 변수를 전달해야 :

return RedirectToAction("Facility", new { contractId = model.ContractId });