2016-10-21 1 views
0

내보기는 다음 테이블 정의가 포함되어ASP.NET 면도기 : 매개 변수로 변수를 보내기

<table> 
    <thead> 
    <th>Title</th> 
    <th>Artist</th> 
    <th>Genre</th> 
    <th>Price</th> 
    </thead> 
    @foreach (var album in Model) 
    { 
     <tr> 
      <td>@album.Title</td> 
      <td> 
       @{ 
        foreach (var artist in ViewBag.Artists) 
        { 
         if (artist.ArtistID == album.ArtistID) 
         { @artist.Name } 
        } 
       } 
      </td> 

      <td> 
       @{ 
        foreach (var genre in ViewBag.Genres) 
        { 
         if (genre.GenreID == album.GenreID) 
         { @genre.Name } 

        } 
       } 
      </td> 

      <td>@album.Price</td> 
      <td> 
       <a asp-action="Details" asp-controller="Albums">Details </a> 
       <a asp-action="Edit" asp-controller="Albums">Edit </a> 
       <a asp-action="Delete" asp-controller="Albums">Delete</a> 
      </td> 
     </tr> 

    } 
</table> 

마지막 열의 Details, EditDelete 옵션은 albumAlbumID 속성에 키가 될 필요가 변수를 사용하여 리디렉션이 적절한 앨범에서 작동하도록합니다. 나는 이것에 대한 매개 변수가 asp-parameter일지도 모른다고 생각했다. 액션은 asp-action에 의해 설정되었지만, 존재하지 않는 것처럼 보인다.

변수를 URL 매개 변수 (예 : /Albums/Details/var)로 전달하는 적절한 방법은 무엇이며 다른 측면에서이 값을 검색하는 데 사용되는 이름은 무엇입니까?

Shyju의 대답은 매개 변수 전달과 관련이 있습니다. 지금까지 매개 변수를 검색하려는 시도는 다음과 같습니다.

<%=Url.RequestContext.RouteData.Values["id"]%> -로드 할 수 없습니다. 유효하지 않은 문자 <.

ViewContext.RouteData.Values["id"] -로드하지 못했습니다. intobject==을 사용하여 비교할 수 없습니다.

RouteData.Values["id"] - 컴파일 오류가 발생했습니다. 이름이 현재 컨텍스트에 없습니다.

+0

을 임명했다 가정하면? Details

+0

'@html.ActionLink ("Details", "Details", "Albums", new {albumID = album.ID}, null)'는 asp- * 속성을 사용하는 대신 작동합니까? – Bort

+0

아니면 html 도우미 ?? @ Html.ActionLink (....) –

답변

1

링크 태그 도우미를 사용하는 경우 asp-route-[paramName] 속성을 사용하여 액션 메소드에 추가 정보를 전달할 수 있습니다. 당신이 당신의 세부 동작 방법의 id 매개 변수 앨범 ID를 전달하려는 경우 예를 들어, 당신은이

<a asp-action="Details" asp-controller="Albums" asp-route-id="@album.ID">Details </a> 

101이 될 것입니다 경우

<a href='/Albums/Details/101'>Details</a> 

아래와 같은 마크 업을 생성 할 수있다 실제 앨범 ID 값으로 대체되었습니다. 당신은 고전적인 방법을 사용 해달라고 왜

는 귀하의 세부 정보 표시 작업 방법은 매개 변수는 id

public ActionResult Details(int id) 
{ 
    // to do : Get the album using the id and send something to the view 
} 
+0

이것은 질문의 첫 번째 부분에 대답하지만 대상보기에서 매개 변수가 어떻게 액세스됩니까? [이 질문] (http://stackoverflow.com/questions/979532/how-to-get-the-current-route-id-within-a-view-from-the-url-asp-net-mvc) 제안 '<% = Url.RequestContext.RouteData.Values ​​[ "id"] %>'의 사용은 오류를 반환합니다. – Passage

+0

세부 정보 작업에 매개 변수를 사용해야하고 링크를 통해 탐색 할 때 값을 사용할 수 있습니다. 업데이트 된 답변을 참조하십시오. – Shyju

+0

ViewBag를 통해 업데이트 된 데이터를 전달합니다. 주어진 id를 가진 앨범을 모델로 전달하는 것은 잘 작동했을 것입니다. – Passage

관련 문제