【发布时间】:2023-03-09 18:10:01
【问题描述】:
背景:
在我们的网上商店应用程序中,我们有许多部分视图来制作各种产品列表。 在一项重大的重构工作中,我们希望摆脱大部分,可能除了其中一个之外的所有部分,以避免所有重复的代码。
列表是一个简单的<ul> <li>,其设计属性应由 CSS 指定。
我们有现有的框架,可以通过图像 url 将图像动态缩放到适当的大小 像这样
http://images.shop.com/data/product/160x200/5155-5ca8e.jpg
此图像将缩放为 160x200
由于我们有可能不想让客户请求比他们需要的更大的图像。
问题:
图片尺寸选择逻辑最正确的地方是什么?
或者,换一种说法。在这种情况下应该在什么时候确定img src 属性?
这种逻辑有很多潜在的地方
- 主模型/视图/控制器上下文
- 部分模型/视图/控制器上下文
- Javascrit
- 图像的 HTTP 处理程序
我认为#1 或#2 可能最有意义。 如果是这样,这是模型、视图还是控制器逻辑? 它们都有某种优势,但似乎都不合适
渲染产品列表的部分可用于渲染各种不同的产品列表。从全屏图像滑块到 10x10 像素的小缩略图。 而且我们不想强迫缩略图请求全屏图像,只是为了容纳可能最大的列表。
当前的逻辑基本上是视图逻辑。通过调用相关地点的部分列表。
(这是我们当前方法的提炼版本)
Landingpage.cshtml
<ul>
Html.RenderAction("ListRandom", "Product", new { Category = feed.catId});
</ul>
ProductController.cs
public PartialViewResult ListRandom(int? CategoryId)
{
var model = new ProductListModel { ProductsRandomGet(CategoryId) };
return PartialView("_ProductList", model);
}
_ProductList.cshtml
<li>
<a href="@item.href">
<img alt="@item.Name"
src="data/product/35x44/@item.Image" /> /* Image Size */
<div class="listItemInfo">
@item.Name
@item.Price
</div>
</a>
</li>
虽然这可行,但它会导致所有不同类型的产品列表出现大量重复的 html。不同列表的html几乎相同,所有不同之处都可以放在CSS中。
但不是图像 src 属性
【问题讨论】:
-
“图像尺寸选择逻辑的最正确位置是什么?” - 在您解释该逻辑是什么之前,我们不能说任何有用的信息。我认为您的视图应该负责,因为您的视图建模了一个布局,此时您确切知道要显示的图像大小。
-
逻辑是“为这个 html/design 元素选择尽可能小的图片尺寸”。
-
我同意,这可能是一个视图逻辑。但这并不明显,并且有缺点。而且,它是视图逻辑还是部分视图逻辑? (在我看来,部分应该不知道它在更大的视图上下文中的实现
-
您在设计时就知道这一点,因此当您在那里进行设计时,视图将是正确的位置。请解释为什么它不明显,它会导致什么缺点以及您认为替代方案将如何解决这个问题。至于局部视图问题,这完全取决于您的局部视图做什么。没有灵丹妙药。
-
如果我把逻辑放在局部,那么我需要让它知道它的主视图。
标签: c# asp.net-mvc asp.net-mvc-4 asp.net-mvc-partialview