我正在创建一个论坛,用户可以使用mvc3
提出问题和评论在里面我有一个链接“详细信息”为每个问题....在一边,我有2个更多的链接“显示”和“添加评论” 在节目中,我可以看到与特定问题相关的所有评论
在添加评论中,我们可以为特定问题添加评论 其控制器代码如下:
public ActionResult Addnew(int id)
{
return View();
}
[HttpPost]
public ActionResult Addnew(Answer answr, int id)
{
answr.QuestionQId = id;
_db.Answers.Add(answr);
_db.SaveChanges();
return RedirectToAction("Index");
}
并且在视图中我写道:
@model Hobby.Models.Answer
@{
ViewBag.Title = "Addnew";
}
<h2>Addnew</h2>
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
@using (Html.BeginForm()) {
@Html.ValidationSummary(true)
<fieldset>
<legend>Answer</legend>
<div class="display-label">Question</div>
<div class="display-field">
@Html.DisplayFor(model => model.Question.Que)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.Ans)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Ans)
@Html.ValidationMessageFor(model => model.Ans)
</div>
<p>
<input type="submit" value="Add Comment" />
</p>
</fieldset>
}
<div>
@Html.ActionLink("Back to List", "Index")
</div>
但它没有在问题表中显示问题..... 请帮帮我
答案 0 :(得分:1)
我没有看到你绑定必要数据的位置我认为AddNew [Get]方法应该从DB获取问题并将其设置为视图,我想你应该做类似的事情
public ActionResult Addnew(int id)
{
Answer ans = new Answer();
ans.Question = _db.Questions.SingleOrDefault(q => q.Id == id);
return View(ans);
}
答案 1 :(得分:0)
@Jayanga是对的,但我认为您仍然希望显示“2表”中的数据,如您在问题标题中所述。假设你想要显示问题和所有相关答案,并假设这是.NET实体框架(不清楚Linq2Sql的语法),你会这样做:
public ActionResult Addnew(int id)
{
var question = _db.Questions.Include("Answers").SingleOrDefault(q => q.Id == id);
return View(question);
}
这会将您的绑定模型类型更改为Question,但我假设一个问题可以有多个答案,在这种情况下,您将在View中拥有所需的所有信息...类似于这样:
// In your .cshtml file
<article class="question">@Model.Que</article> @* this is your question text *@
@foreach (var answer in Model.Answers.OrderBy(a => a.PostedDate)) { @* assuming you want to sort this *@
<article class="answer">@answer.Ans</article> @* this would be your answer text *@
}