gpt4 book ai didi

c# - 在 LINQ 查询中的模型值中使用列表

转载 作者:行者123 更新时间:2023-12-02 08:35:55 25 4
gpt4 key购买 nike

我正处于 asp.net MVC 开发的非常基础的阶段。因此,有时我很难处理简单的 LINQ 查询。

场景-

我有一个页面有一些 Image并由用户对该图像发表评论(就像 facebook 上包含用户评论的帖子一样)。

所以我从文本区域保存这些评论并通过 Ajax 查询发送图像 ID。

这是我的 Controller 操作方法-

正在保存评论-

   [HttpPost]
public void SaveComment(CardModel card) {
CardCommentTable commenttable = new CardCommentTable();
commenttable.CardComment = card.cardComment;
commenttable.FKcardID = card.cardID;
db.CardCommentTables.InsertOnSubmit(commenttable);
db.SubmitChanges();
}

此评论保存在CardCommentTable保存该图像中表的外键引用。

在 View 页面上渲染图像和其他字段-

此查询呈现图像和使其成为图像帖子的其他字段。喜欢title , dateofsubmit , Like

public ActionResult CardDetails(CardModel card) {

var cardDetail = (from u in db.CardTables
where u.CardID == card.cardID
select new CardModel {
cardID = u.CardID,
cardHashCode = u.CardHashCode,
cardDate = u.CardDate,
cardFileName = u.CardFileName,
cardFilePath = u.CardFilePath,
cardTitle = u.CardTitle
}).ToList();
return View(cardDetail);

}

现在 cardTable我还有一个名为 cardComment 的专栏因为我想显示表 CardCommentTable 中所有已保存的评论.

所以我尝试了-

public ActionResult CardDetails(CardModel card) {
var allsavedcomments= (from u in db.CardCommentTables
where u.FKcardID == card.cardID
select u).ToList();

var cardDetail = (from u in db.CardTables
where u.CardID == card.cardID
select new CardModel {
cardID = u.CardID,
cardHashCode = u.CardHashCode,
cardDate = u.CardDate,
cardFileName = u.CardFileName,
cardFilePath = u.CardFilePath,
cardTitle = u.CardTitle,
cardComment = allsavedcomments // Trying to render all saved coments here.
}).ToList();
return View(cardDetail);

}

查看-

@model IEnumerable<FunRanger.Models.CardModel>

@foreach (var item in Model) {
<script type="text/javascript">
$(function () {
$('#save-comment').click(function () {
var textareavalue = $('#textarea-comment').val();
$.ajax({
url: '/Home/SaveComment/',
type: 'post',
data: '&cardComment=' + textareavalue + '&cardID=' + '@item.cardID',
success: function (data) {
$('#all-comments').append(data);


}

});

});

});
</script>
using (Html.BeginForm()) {
@Html.ValidationSummary(true)


@if (Model != null) {


<h2 class="header-wrapmain">
@item.cardTitle
</h2>

@item.cardDate.ToShortDateString()


<img src="@item.cardFilePath" />

<a href="#" class="@item.cardHashCode" rel="tooltip" data-placement="bottom" title="Filter by @item.cardHashCode">
#@item.cardHashCode</a>



}
else {
<div class="alert alert-danger">
No More items to preview
</div>
}


}

<textarea class="span12" rows="5" id="textarea-comment" style="resize: none" placeholder="Enter a comment..."></textarea>

<a href="javascript:;" id="save-comment" class="btn-primary btn">Save comment</a>

<ol>
<li>
@item.cardComment
</li>
</ol>

}

如何插入 List在此处生成一列。

如何使用上述查询显示所有已保存的评论?

感谢您的帮助。

最佳答案

我用 Foreign key relations ship 稍微更新了你的代码。这将使您免于对数据库使用两个不同的查询(就像您现在正在做的那样)。

所以如果你的数据库模型看起来像这样 -

enter image description here

那么你应该以这种方式在你的代码中有一个 View 模型 -

public class ImageViewModel
{
public string ImageId { get; set; }
public string ImageUrl { get; set; }
public List<string> Comments { get; set; }
}

你的 Controller 操作将返回所有结果应该是这样的 -

 public class ListController : Controller
{
public ActionResult Index()
{
ImageViewModel model;
using (SampleEntities entities = new SampleEntities())
{
model = (from p in entities.Images
where p.ImageId == "1"
select new ImageViewModel()
{
ImageId = p.ImageId,
ImageUrl = p.ImageUrl,
Comments = p.ImageComments.Select(pa => pa.Comment).ToList()
}).FirstOrDefault();
}

return View(model);
}
}

最后将显示所有图像结果的 View -

@model MVC.Controllers.ImageViewModel

@{
ViewBag.Title = "Index";
}

<h2>Index</h2>

<div>
<h4>ImageViewModel</h4>
<hr />
<dl class="dl-horizontal">
<dt>
@Html.DisplayNameFor(model => model.ImageId)
</dt>

<dd>
@Html.DisplayFor(model => model.ImageId)
</dd>

<dt>
@Html.DisplayNameFor(model => model.ImageUrl)
</dt>

<dd>
@Html.DisplayFor(model => model.ImageUrl)
</dd>
<br/>
@foreach (var item in Model.Comments)
{
@item <br/>
}

</dl>
</div>

输出将是 -

enter image description here

关于c# - 在 LINQ 查询中的模型值中使用列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21525421/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com