我對ASP.NET MVC很新,所以請友好。ASP.NET MVC控制器語法中的Linq
我有一個非常簡單的數據庫與三個表問題,QuestionOptions,迴應。
問題中的我的pk是Id和指向QuestionOption和Responses中questionId的鏈接。我在問題中也有一個名爲pageId的字段,因此可以在一個頁面上出現多個問題。
我在我的控制器中開始使用它;
// GET: /Questions/ViewQuestion/5
public ActionResult ViewQuestion(int? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
Question question = db.Questions.Find(id);
if (question == null)
{
return HttpNotFound();
}
return View(question);
}
而我的View完全返回一個問題和選項;
@model Template.Models.Question
@{
ViewBag.Title = "Details";
}
<div>
<h4>Question #@Model.questionId</h4>
<hr />
<h1> @Html.DisplayFor(model => model.question1)</h1>
<ul>
@foreach (var item in Model.QuestionOptions)
{
<li>@Html.DisplayFor(modelItem => item.questionOption1)</li>
}
</ul>
但現在我想創建一個顯示所有具有相同的pageID問題一個觀點 - 我越來越行不通。
這是我的新ActionResult;
public ActionResult ViewQuestion(int? id)
{
var pageId = id;
var question = from q in db.Questions
where q.pageId == pageId
orderby q.ranking
select new { q.questionId,
q.questionType, q.question1}
;
return View(question.ToList());
}
And my View;
@model IEnumerable<Template.Models.Question>
@{
ViewBag.Title = "View question;";
}
<div>
@foreach (var item in Model) {
<h4>Question </h4>
<hr />
<h1> @Html.DisplayFor(model => item.question1.AsEnumerable())</h1>
<ul>
@foreach (var item in Model.QuestionOptions)
{
<li>@Html.DisplayFor(modelItem => item.questionOption1)</li>
}
</ul>
}
但現在不承認QuestionOptions
作爲模型的一部分了,即使我評論說,部分出我仍然得到錯誤傳遞到字典的模型產品類型 - 但這本字典需要一個System.Collections.Generic.IEnumerable
我知道某處我的語法是非常錯誤的,但我不知道在哪裏搜索3天后。請幫忙!
你能告訴我們問題模型嗎? – Cris
你的第一個例子是返回一個「Question」類型的對象,但你的第二個例子是返回一個匿名類型。這是你的意圖嗎?您可以將您的選擇更改爲'select q' – Mashton