【发布时间】:2014-02-26 19:47:35
【问题描述】:
我处于 asp.net MVC 开发的非常基本的阶段。所以有时我很难用简单的 LINQ 查询来工作。
场景-
我有一个页面,其中包含一些 Image 并由用户评论该图像(就像 facebook 上包含来自用户的 cmets 的帖子一样)。
所以我从 textarea 中保存这些 cmets 并通过 Ajax 查询发送图像 ID。
这是我的控制器操作方法-
保存评论-
[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 中,该图像中的表具有外键引用。
在视图页面上渲染图像和其他字段-
此查询呈现图像和其他使其成为图像帖子的字段。比如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 中所有保存的cmets。
所以我尝试了-
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 结果列中。
如何使用上述查询显示所有已保存的 cmets?
感谢您的帮助。
【问题讨论】:
-
您是在谈论在您的视图中显示 cmets 吗?如果是这样,请也添加视图。
-
您遇到错误了吗?它是什么,在哪里? cardComment 将是您声明的任何类型。那是什么类型的?
-
@AndreiV,请参阅编辑。
-
@simonatrcl- 是的,错误是
Error 16 Cannot implicitly convert type 'System.Collections.Generic.List<FunRanger.Models.CardCommentTable>' to 'string' -
@user3163213,该错误告诉您您正在尝试一次显示所有 cmets,就好像它在单个
string对象中一样。
标签: c# asp.net sql asp.net-mvc linq