使用 AJAX 处理 MVC ASP.NET 实体的类似和不同

本文关键字:实体 处理 AJAX MVC ASP NET 使用 | 更新日期: 2023-09-27 18:34:41

我有一个剃刀视图,其中模型是 IEnumerable 的产品,所以我只是在模型上使用 foreach 循环列出视图中的所有产品。除了每个产品,您可以在下面看到我显示了它有多少个大拇指。我要完成的最后一件事是,当他们单击"竖起大拇指"链接时,我想将ProductThumbsUp记录添加到当前登录用户的数据库中。如果用户已经竖起大拇指并再次单击它,我想从产品中删除他们的产品竖起大拇指。

我正在使用EntityFramework 7和MVC6。我有两个表:产品和产品大拇指。

我想知道当当前登录用户使用 MVC 单击链接时,我应该如何为他们添加 ProductThumbsUp 记录。我假设这样的东西绝对应该是一个 AJAX 帖子。但是我只是想把产品ID发送到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; }

使用 AJAX 处理 MVC ASP.NET 实体的类似和不同

为了提高效率,

我建议获取所有产品,而不是从DB获取每个产品的所有拇指行,只需获取每个产品的类似计数。

因为您不需要每行拇指向上,而只需要显示计数。想象一下,如果你在一个产品上有一百万个赞,突然你把一百万行从数据库拉到你的服务器 - 只是为了显示一个计数。

此外,我会对数据库进行第二次调用,以获取当前用户给出的所有大拇指(他喜欢的产品 ID 列表(。这将允许您向用户显示他们是否喜欢它或现在。

要将大拇指

添加到产品 - 您可以发送一个 ajax 调用,告诉他喜欢哪个产品 ID,并且 mvc 操作可以将大拇指向上行插入到数据库中。

最简单的方法是创建两个标记

竖起大拇指 删除竖起大拇指

并使用javascript或jquery切换它。类似地调用方法 使用 jquery ajax 来添加和删除计数(可以使用相同的方法使用标志(使用相同的方法,您可以返回新的 Count 并绑定它