2012-07-10 52 views
1

嗨,HTMLHelper中的数据库操作,是吗?

我有一个ASP.NET MVC 3网站,我需要建立一个像墙,采用ID列表,然后建立基于这份榜单上imageWall。

imagewall将是一个partialView。

首先想到的是将当前带有ID的ViewClass列表放在将要显示的图像上,但我不确定这是一个好的解决方案,尤其是当这个图像墙移动到另一个父视图时尤其如此。

所以问题是。我可以在HTML助手内进行数据库操作吗?什么是最佳做法?

这部分视图可能会被追查。

+3

是的可能,但不是,你不应该 – jrummell 2012-07-10 18:28:47

回答

1

你为什么要这么做呢?

我想你应该从你控制器的动作在你查看返回列表,然后遍历它,如:

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

您可以在此情况下,使用@Html.RenderAction。你这样调用它:

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

哪里ImageWall是你的新ImageWall Controller和GetImages是你Action的名称。

这将允许您在另一个Controller的视图内使用ImageWall控制器。

+0

我的控制器操作确实已经有一个复杂的ViewClass返回到视图。正如我所说,我正在考虑将图像列表放在这个ViewClass中,但这意味着如果将局部视图(imagewall)移动到另一个视图,我将不得不在这个ViewClass中包含这个列表。如果我使用这个包将tempdata传送到视图中,我还必须在多个操作中完成这些操作,这就是为什么我认为HTMLHelper会是一个好方法。因此,我不需要关心放置这个影像墙的位置,它会自行处理。 – Ivy 2012-07-10 18:03:42

+1

你可以创建一个单独的'ImagewallController',它是视图。然后,如果您需要将ImageWall从一个位置移动到另一个位置,则只需在现在需要的位置调用局部视图即可。 – 2012-07-10 18:12:03

+2

所以,你的意思是我应该使用两个控制器和动作来显示带有部分图像墙的页面?这是如何运作的?我可以说当使用这个parial视图时,它会在ImagewallController上运行正确的操作吗?现在,我只是使用Render.Partial,有时我会将一些模型传递给这个局部视图,但是避免将这些数据放置在ModelView上是很有用的。 – Ivy 2012-07-10 18:20:48