Url.Action 매개 변수?


116

컨트롤러를 나열하면

 public ActionResult GetByList(string name, string contact)
 {        
     var NameCollection = Service.GetByName(name);    
     var ContactCollection = Service.GetByContact(contact);           
     return View(new ListViewModel(NameCollection ,ContactCollection));
 }

ASPX 페이지에서 호출합니다.

 <a href="<%:Url.Action("GetByList","Listing" , new {name= "John"} , new {contact="calgary, vancouver"})%>"><span>People</span></a>

ASPX 코드에 문제가 있습니다 ... john이라는 이름의 레코드를 가져올 수 있습니다. 그러나 contact="calgary, vancouver"내가을 주면 웹 페이지가 오류가 발생합니다.

.NET Framework에서 두 개의 매개 변수를 어떻게 호출 할 수 있습니까 Url.Action? 나는 아래를 시도했지만 그것도 잘못된 것 같습니다.

  <a href="<%:Url.Action("GetByList","Listing" , new {name= "John" , contact= " calgary, vancouver" })%>"><span>People</span></a>

답변:


207

다음은 올바른 오버로드입니다 (예 }에서는 routeValues익명 개체에 대한 닫기가 누락 되어 코드에서 예외가 발생 함).

<a href="<%: Url.Action("GetByList", "Listing", new { name = "John", contact = "calgary, vancouver" }) %>">
    <span>People</span>
</a>

기본 경로를 사용한다고 가정하면 다음과 같은 마크 업이 생성됩니다.

<a href="/Listing/GetByList?name=John&amp;contact=calgary%2C%20vancouver">
    <span>People</span>
</a>

GetByList두 매개 변수를 전달하는 컨트롤러 작업을 성공적으로 호출합니다 .

public ActionResult GetByList(string name, string contact) 
{
    ...
}

@ user787788, 어떤 문제가 발생합니까? 두 개의 매개 변수를 받아들이지 않는다는 것은 무엇을 의미 합니까? 누가 수락하지 않습니까? 오류 메시지가 표시됩니까? 컨트롤러 동작이 맞지 않습니까? 잘못된 가치를 얻고 있습니까? 구체적이어야합니다.
Darin Dimitrov 2011 년

두 개의 매개 변수를 제공하면 aspx 페이지가 컨트롤러에 닿지 않습니다. 페이지 자체에서 오류를 찾습니다. 나는 낡은 무언가라는 근본적인 예외가 있습니다. 영문은 간다
user787788

@ user787788, 오류는 무엇입니까? 당신이 받고있는 정확한 메시지?
Darin Dimitrov 2011 년

오류는입니다. 주소 (URL)를 잘못 입력했을 수 있습니다.
user787788 2011-06-08

2
@DarinDimitrov, 이것은 매우 오래된 게시물 이라는 것을 알고 있지만 온라인 상태 인 것을 봤습니다. 매개 변수를 동적으로 전달하는 방법 ( "John"처럼 하드 코딩되지 않음)을 어떻게 알지 못할 것 같습니까?

8

이것은 MVC 5에서 작동합니다.

<a href="@Url.Action("ActionName", "ControllerName", new { paramName1 = item.paramValue1, paramName2 = item.paramValue2 })" >
    Link text
</a>

4

설명서에서 ParseQueryString 유틸리티를 사용하여 NameValueCollection이라고되어있는 경우에도 HttpValueCollection이라는 개인 컬렉션을 반환 할 수 있습니다. 그런 다음 키를 수동으로 추가하면 HttpValueCollection이 인코딩을 수행합니다. 그런 다음 QueryString을 수동으로 추가하십시오.

var qs = HttpUtility.ParseQueryString(""); 
qs.Add("name", "John")
qs.Add("contact", "calgary");
qs.Add("contact", "vancouver")

<a href="<%: Url.Action("GetByList", "Listing")%>?<%:qs%>">
    <span>People</span>
</a>

0

여기에 또 다른 간단한 방법이 있습니다.

<a class="nav-link"
   href='@Url.Action("Print1", "DeviceCertificates", new { Area = "Diagnostics"})\@Model.ID'>Print</a>

@Model.ID매개 변수는 어디에 있습니까?

그리고 여기에 두 번째 예가 있습니다.

<a class="nav-link"
   href='@Url.Action("Print1", "DeviceCertificates", new { Area = "Diagnostics"})\@Model.ID?param2=ViewBag.P2&param3=ViewBag.P3'>Print</a>
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.