我有一个剃刀视图,其中模型是产品的IEnumerable,所以我只是使用模型上的foreach循环在视图中列出所有产品。除了每种产品,您还可以在下面看到我正在显示其拥有多少ThumbsUps的计数。我要完成的最后一件事情是,当他们单击链接“ Give Thumbs Up”时,我想向当前登录用户的数据库中添加一个ProductThumbsUp记录。如果用户已经竖起大拇指并再次单击它,我想从产品中删除其ProductThumbsUp。
我正在使用EntityFramework 7和MVC6。我有两个表:Product和ProductThumbsUp。
我想知道当他们使用MVC单击链接时如何为当前登录用户添加ProductThumbsUp记录。我假设类似这样的内容绝对应该是AJAX帖子。但是我是否只想将ProductId发送到AJAX帖子?然后在我的控制器中创建一个新的ProductThumbsUp并设置它的ProductId。然后将新创建的ProductThumbsUp对象和当前登录的用户发送到我的存储库层进行保存。
我想知道是否有更好的方法来执行此操作,因为模型中的每个帖子都已附加了ThumbsUps列表。有没有更好的方法可以做到这一点?
这是我的剃刀视图的设置方式:
@model IEnumerable<Product>
@foreach (var product in Model)
{
<h2>@product.Name</h2>
<div>@product.Description</div>
<a href="#" class="lnkViewLikes"># of Thumbs Ups Given:<span class="badge">@product.ThumbsUps.Count()</span></a>
<a href="#" class="lnkThumbsUp">Give Thumbs Up</a>
}
这是我的产品模型的样子:
public int Id { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public ICollection<ProductThumbsUp> ThumbsUps { get; set; }
为了提高效率,
我建议获取所有产品,而不是从DB获取每个产品的所有thumbsUps行,而只是获得每个产品的赞计数。
由于您不需要每行thumbsUp,而只需要显示计数即可。想象一下,如果您的产品有100万个赞,那么按比例扩展方案就突然从数据库中拉出100万行到您的服务器-只是为了显示数量。
我还要再次调用数据库,以获取当前用户给出的所有thumbsUps(他喜欢的产品ID列表)。这样,您便可以向用户显示他们是否喜欢或现在。
要将原始的大拇指添加到产品中-您可以发送一个ajax调用,告诉他喜欢哪个productId,并且mvc操作可以在数据库中插入thumbsUp行。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句