다른 모델의 목록이 포함 된 모델이 있습니다.MVC Asp.net Actionlink를 사용하여 뷰에서 컨트롤러로 복잡한 객체 목록을 전달하는 방법은 무엇입니까?
public class RentalModel
{
public int RentalId { get; set; }
public string CustomerId { get; set; }
public List<MovieModel> Movies { get; set; }
}
가 그럼 난 임대를 클릭하는 세부 것, 모든 임대가 표시되는 곳이 있습니다
public class MovieModel
{
public int MovieId { get; set; }
public string Title { get; set; }
public string Director { get; set; }
}
그런 다음 나는 RentalModel 있습니다 의가 나는 MovieModel 있다고 가정 해 봅시다 은 "ShowRentals.aspx"에서 "ShowRentalDetails.aspx"로 표시
<% using (Html.BeginForm()) { %>
<% foreach(var rent in Model) { %>
<div class="editor-label">
<div class="editor-field">
<%: rent.RentalId %>
<%: Html.ActionLink("Details", "ShowRentalDetails",
new {rentalId = rent.RentalId,
customerId = rent.CustomerId,
movies = rent.Movies,
})%>
내가 디버깅 할 때, 나는 영화 목록은 항상 null 인 것을 알 수있다. 이는 Id와 같이 기본 매개 변수 만 성공적으로 전달되기 때문입니다. 복잡한 유형을 전달할 수 없었습니다. 컨트롤러에 전달하려면이 목록이 정말로 필요합니다. 액션 링크가 불가능하기 때문일 수 있습니까? 다른 해결 방법은 무엇입니까? 나는 이것에 잠시 붙어 있었어. 맨손으로 여기에 신경 쓰지 마세요, 이것은 제가 목록으로 무엇을하고 있는지 보여주기위한 것입니다. 도와주세요.
컨트롤러에서는, 여기에 두 가지 작업, ShowRentals 및 ShowRentalDetails의 (후속) :
public ActionResult ShowRentals()
{
MembershipUser user = Membership.GetUser(User.Identity.Name, true);
Guid guid = (Guid)user.ProviderUserKey;
Entities dataContext = new Entities();
Member member = dataContext.Members.Where(m => m.UserID == guid).First();
IEnumerable<RentalModel> toReturn = from r in member.Rentals
select new RentalModel
{
RentalId = m.RentalID,
CustomerId = m.CustomerID,
};
return View(toReturn);
}
[Authorize]
public ActionResult ShowRentalDetails(RentalModel model, List<MovieModel> movies)
{
return View("ShowRentalDetails", model);
}
데이터베이스에 영화의 배열입니다 때문에 나는 ShowRentals에서 설정할 수 없습니다를 MovieModel이 아닌 동영상 유형이므로 두 목록은 호환되지 않습니다. ShowRentals 뷰에서 전달되고 모델이 mvc에 의해 재구성 된 경우 모델에서 null이고 action 링크에서 명시 적으로 매개 변수로 전달 된 경우에도 모델이 작동하지 않습니다. 도움!
전체 개체를 보내거나 Movie ID를 보내고 서버에로드 할 수 있습니까? –
전체 목록을 보내야합니다. 아니면 전체 모델을 보내겠습니까? 어느 쪽이든 컨트롤러 쪽에서 해당 목록에 액세스하여 세부 정보보기 페이지에 표시해야합니다. – dumbfreak
컨트롤러도 볼 수 있습니까? – Shaokan