2012-06-23 2 views
1

여러 개의 부분 뷰가있는 레이아웃이있는 사이트에서 작업하고 있습니다. 이러한 부분 뷰에는 데이터베이스가 연결된 모델이 있습니다. 부분 뷰는 별도로 표시 할 수 있지만 동일한 레이아웃에는 표시 할 수 없습니다. 나는 모든 모델을 가지고있는 엔티티 모델을 가지고 있으므로 첫 번째 접근법을 사용했다. 데이터베이스가 생성되고 연결되었습니다. 나는 테이블에 데이터가 있고 나는 편집과 삭제 등을 위해 현재 관리 섹션에 이것을 표시하고 있습니다. 내가 뭘 잘못하고 있는지 확실하지 않습니다.하나의보기에 여러 모델이 있습니다.

public ActionResult _SubCategory() 
    { 
     return View(_db.SubCategories.ToList()); 
    } 

내 부분보기에 내가 senarios 비의 숫자가 제대로 작동 넣어 가지고 : - 현재 auditScheduleController에서

<li>@Html.Partial("_SubCategory")</li> 

내 컨트롤러 목록입니다 여기 내 레이아웃 부분 호출입니다. 내가 넣으면 @model IEnumerable<QQAudit.Models.Subcategory> 나는 그 자체로 페이지를 표시하고 하위 카테고리의 목록을 얻을 수 있습니다. 레이아웃을 통해 열면 오류가 발생합니다. 무언가를 말하는 약

"사전에 전달 모델 항목 유형 'System.Data.Entity.DynamicProxies.AuditSchedule_5218AAD34020C54DC3FF0CFD6169988BB5FED2C296ABF80AC3EFFF93441CE91B'의이지만,이 사전은 유형 'QQAForm.Models.SubCategory'의 모델 항목을 필요로한다.

내가 다른 포럼에 보니 내가 시도 몇 가지 있지만, 모든 것을 그 밖에 일부 방식으로 실패 할 것입니다. 발견

재미있는 것은 내 배경 젠드 PHP입니다 그리고 내가 할 수있는 일 전 그곳에서 성취하려고 애쓰는 것이지만 중복 될 수는 없다. MVC3 C#에서 그것을 먹었습니다.

2012년 8월 1일

나는 이미이 될하기 위해 Global.asax에 변경 한 링크 페이지의 ID를 추가 할 수 있었다 지점에서이다 :

  routes.MapRoute(
      "AuditSecion", // Route name 
      "{controller}/{action}/{id}/{section}", // URL with parameters 
      new { controller = "Home", action = "Index", id = UrlParameter.Optional, section = UrlParameter.Optional }, // Parameter defaults 
      new[] { "QQAForm.Controllers" } 
     ); 

내가 원하는 링크를 클릭하여 페이지가있는 ID를 채 웁니다. 그래서 부분은 다음과 같습니다 :

@{ Layout = null; } 

@model IEnumerable<QQAForm.Models.SubCategory> 

@foreach (var item in Model) 
{ 

@Html.ActionLink(item.SubcategoryName, "audit", new { id = item.SubCategoryID }, null) 

} 

하위 범주 ID는 섹션이어야하며 ID는 다음과 같은 페이지의 ID 여야합니다. 이론

http://localhost:52490/AuditSchedule/Audit/1192 

하위 메뉴의 링크는 도움을

http://localhost:52490/AuditShedule/Audit/1192/1 

감사해야합니다!

+0

OK 상단

@{ Layout = null; } 

을 넣어보십시오. 내 의견에는 5 가지 영역이 있습니다. 머리글, 사이드 메뉴 부분, 상단 영역 부분 및 하단 영역은 내용 본문입니다. 이제 감사 목록에서 뷰가 선택된 레코드로 맨 위 부분으로 채워지는 위치에 있습니다. 페이지에서 무슨 일이 일어나더라도 그 곳에 머물러 있기를 바랍니다. 사이드 메뉴는 레이아웃의 맨 아래 또는 본문에 양식을 표시하려는 하위 카테고리 테이블에서 채워집니다. 지금 당장은 질문마다 폼을 변경하는 링크가있는 메뉴가 있으면 문자열 id가 레코드 ID입니다 (이 테이블도 변경되고 감사 레코드가됩니다.) –

답변

2

문제는 부분보기를 호출하는 방식입니다. Html.Partial에는보기 이름과 모델이 필요합니다. 당신이 모델을 지나치지 않으므로, 그것은 밖으로 나가고 있습니다. (코드가 _SubCategory이라는 코드를 호출 할 것으로 기대하지만 실제로는 부분보기 _SubCategory으로 호출하려고합니다. 모델을 명시 적으로 전달합니다 (모델에서 사용할 수있는 경우).) :

@Html.Partial("_SubCategory", Model.EnumerableListOfSubCategories) 

또는 Html을 사용할 수 있습니다.액션 현재 컨트롤러에 액션의 결과를 렌더링에있어서,

@Html.Action("_SubCategory") 

나는 두 번째 방법은 당신이하려고하는 것입니다 생각합니다.

+0

액션이 작동했습니다. 그러나 나는 어떤 종류입니다 왜냐하면 지금 웬일인지 내 부분보기가 머리글과 꼬리말로 레이아웃에서 호출하는 것처럼 보이기 때문입니다. 그래서 부분을 할 때 머리글과 바닥 글을 포함하여 원하는 위치에 나타납니다. Visual Studio를 종료하고 다시 시작하는지 다시 확인하십시오. –

1

당신의 _subcategory 볼이 약간 복잡한 문제이다

+0

고마워요! 전에는 아무 것도하지 않아도됩니다. 어쨌든 고마워요. –

관련 문제