2012-07-10 2 views
1

안녕,HTMLHelper의 데이터베이스 작업은 괜찮습니까?

은 내가 ASP.NET MVC 3의 웹 사이트를 가지고 있고이 목록에 따라 imageWall를 ID 목록을 소요하고 빌드 이미지 벽을 구축 할 필요가있다.

imagewall은 partialView가됩니다.

첫 번째 생각은 표시 할 이미지에 ID가있는 현재 ViewClass에 목록을 배치하는 것이지만,이 이미지가 다른 parentView로 이동 된 경우 특히 좋은 해결책이 아닌지 확실하지 않습니다.

그래서 질문이 있습니다. HTML 도우미에서 DB 작업을 수행 할 수 있습니까? 모범 사례는 무엇입니까?

이 부분보기는 아마도 쫓기게 될 것입니다.

+3

예 가능한 것은 아니지만 아니요. – jrummell

답변

1

왜 처음부터 그렇게했을까요? 당신은이 경우 @Html.RenderAction을 사용할 수 있습니다

foreach(var image in @Model.Images) 
{ 
    // output some HTML code here using each image file path... 
    <img src="@image.Path" /> 
} 

:

나는 당신처럼, 당신의보기에 그 위에 당신이 컨트롤러 액션에서 목록을 반환 한 후 반복한다고 생각합니다. ImageWall이

@Html.RenderAction("GetImages", "ImageWall"); 

새 ImageWall Controller하고 GetImages이 Action의 이름입니다 : 당신은이 방법을 문의하십시오.

이렇게하면 다른 컨트롤러보기 내에있을 때 ImageWall 컨트롤러로 작업 할 수 있습니다.

+0

내 컨트롤러 작업에는보기로 반환 된 복잡한 ViewClass가 이미 있습니다. 제가 말했듯이,이 ViewClass에 이미지 목록을 배치 할 생각 이었지만 부분 뷰 (imagewall)가 다른 뷰로 이동되면이 목록을 ViewClass에도 포함해야합니다. 내가보기에 tempdata를 전송하기 위해 가방을 사용한다면 HTMLHelper가 좋은 방법이라고 생각한 이유가 여러 int 액션을 수행해야 할 것입니다. 이것으로 나는이 imagewall을 어디에 두 었는지 신경 쓸 필요가 없으며, 스스로 처리 할 것이다. – Ivy

+1

별도의'ImagewallController'와 뷰를 만들 수 있습니다. 그런 다음 ImageWall을 한 위치에서 다른 위치로 옮길 필요가 있다면, 이제는 필요한 부분 뷰만 호출하면됩니다. –

+2

그래서이 페이지를 부분적인 imageWall과 함께 표시하기 위해 두 개의 컨트롤러와 액션을 사용해야한다는 말입니까? 어떻게 작동합니까? 이 parial view를 사용할 때 ImagewallController에서 올바른 동작을 실행할 것이라고 언급 할 수 있습니까? 지금은 그냥 Render를 사용하고 있습니다. 부분적으로, 때로는이 부분 뷰에 약간의 Model을 전달하지만이 데이터를 ModelView에 배치하는 것을 피하기 위해서는 인근이 필요합니다. – Ivy