我试图开发一个
@using System.Linq
@model MvcApplication1.ViewModels.QuestionBankViewModel
@{
ViewBag.Title = " Question Bank";
}
@Html.ValidationSummary(true)
<link href="../../Content/Site.css" rel="stylesheet" type="text/css" />
<script src="../../Scripts/jquery.unobtrusive-ajax.min.js" type="text/javascript"></script>
@using (Ajax.BeginForm(new AjaxOptions()
{
UpdateTargetId = "divToAddQuestion",
InsertionMode = InsertionMode.InsertAfter,
}))
{
<div class="div_question">
<table class="table_question">
<tr>
<td rowspan="3">
</td>
<td>
<span>Question Bank Title</span>
</td>
<td>@Html.EditorFor(model => model.QuestionBank.QuestionBankName) @*Question*@
</td>
<td>
</td>
</tr>
<tr>
<td>
</td>
<td>
</td>
<td>
</td>
</tr>
</table>
<div class="div_answer">
<table class="table_answer">
<tr>
<td>
<span>Questions()</span>
</td>
<td>
</td>
<td>
<input type="submit" id="btnAddQuestion" name="ButtonCommand" value="Add Question" class="cancel" />
</td>
<td></td>
</tr>
</table>
</div>
<div id="divToAddQuestion">
</div>
<div id="divToAddAnswer">
</div>
</div>
<div>
<input type="submit" id="btnSaveQuestionBank" name="ButtonCommand" value="Save" />
</div>
}
When I click on btnAddQuestion ,I am calling my PartialView _Question Each time I clcik btnAddQuestion it will load my partialView page _Question
以下是我部分的看法
@using System.Linq
@model MvcApplication1.Models.Question
@{
ViewBag.Title = " Question";
}
@Html.ValidationSummary(true)
<link href="../../Content/Site.css" rel="stylesheet" type="text/css" />
<div class="div_question">
<table class="table_question">
<tr>
<td>
<span>Question Number:</span>
</td>
<td >
@Html.TextBoxFor(model => model.QuestionIndex, new { @class = "tinytextbox" })
</td>
<td></td>
</tr>
<tr>
<td>
<span>Question</span>
</td>
<td>@Html.EditorFor(model => model.strQuestion) @*Question*@
</td>
<td>
@Html.ActionLink("Delete this", "Delete", new { id = Model.QuestionIndex }, new { @class = "deletebutton2", title = "Click to delete this Question and its Answers" })
</td>
</tr>
</table>
<div class="div_answer">
<table class="table_answer">
<tr>
<td>
<span>Answers()</span>
</td>
<td>
</td>
<td>
<input type="submit" id="btnAddAnswer" name="ButtonCommand" value="Add Answer" class="cancel" />
</td>
</tr>
</table>
</div>
</div>
这是我的示范班
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace MvcApplication1.Models
{
public class QuestionBank
{
public virtual int QuestionBankId { get; set; }
public virtual string QuestionBankName { get; set; }
public virtual List<Question> Questions { get; set; }
public virtual List<Answer> Answers { get; set; }
public virtual int SubjectTypeId { get; set; }
}
public class Question
{
public int QuestionId { get; set; }
public int QuestionIndex { get; set; }
public string strQuestion { get; set; }
}
public class Answer
{
public int AnswerId { get; set; }
public int QuestionId { get; set; }
public string strAnswer { get; set; }
public int AnswerIndex { get; set; }
}
}
< 坚固> 这是我的视图模式 坚固 >
using System.Collections.Generic;
using MvcApplication1.Models;
namespace MvcApplication1.ViewModels
{
public class QuestionBankViewModel
{
public QuestionBank QuestionBank { get; set; }
public IEnumerable<Question> Questions { get; set; }
public IEnumerable<Answer> Answers { get; set; }
public string ButtonCommand { get; set; }
public int QuestionIndex { get; set; }
public int AnswerIndex { get; set; }
}
}
当我点击 btnAnswer
时,我需要装入我的 PartyView_Answer
。
@using System.Linq
@model MvcApplication1.Models.Answer
@{
ViewBag.Title = " Answer";
}
@Html.ValidationSummary(true)
<link href="../../Content/Site.css" rel="stylesheet" type="text/css" />
<div class="div_answer">
<table class="table_answer">
<tr>
<td>
<span>Answer Number:</span>
</td>
<td>
@Html.TextBoxFor(model => model.AnswerIndex, new { @class = "tinytextbox" })
</td>
<td>
</td>
</tr>
<tr>
<td>
<span>Answer</span>
</td>
<td>@Html.EditorFor(model => model.strAnswer) @*Question*@
</td>
<td>
</td>
</tr>
</table>
</div>
在这里我可以添加一个答案。 每次我点击 < code> Add ans 时, 它会包含新的答案选择 。
当用户完成添加问题及其相应答案时,用户可以使用 EF4 上下文点击并保存整个问题库。
我的问题是当我点击“拯救”按钮时, 我无法找到我输入的问答。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using MvcApplication1.ViewModels;
using MvcApplication1.Models;
namespace MvcApplication1.Controllers
{
public class HomeController : Controller
{
Question qmodel = new Question();
Answer amodel = new Answer();
[HttpGet]
public ActionResult QuestionBank()
{
return View();
}
[HttpPost]
public ActionResult QuestionBank(QuestionBankViewModel model)
{
switch (model.ButtonCommand)
{
case "Add Question":
model.QuestionIndex++;
qmodel.QuestionIndex = model.QuestionIndex ;
return PartialView("_Question", qmodel);
break;
case "Add Answer":
model.AnswerIndex++;
amodel.AnswerIndex = model.AnswerIndex;
return PartialView("_Answer", amodel);
break;
case "Save":
this.SaveQuestionBank(model);
break;
}
return View(model);
}
public ActionResult Question()
{
ViewBag.Message = "Welcome to ASP.NET MVC!";
return View();
}
public void SaveQuestionBank(QuestionBankViewModel model)
{
QBContext context = new QBContext();
foreach (Question question in model.Questions)
{
context.Question.Add(question);
}
foreach (Answer answer in model.QuestionBank.Answers)
{
context.Answer.Add(answer);
}
context.QuestionBank.Add(model.QuestionBank);
}
public ActionResult About()
{
return View();
}
}
}
我的用户应该能够增删尽可能多的问题和回答选择, 最后他们应该能够通过点击“拯救”按钮来保存一切。
When I click the save button, I am expecting IEnumerable<Question> Questions
and IEnumerable<Answer> Answers
within my controller but I am always getting them as null. Why, and how can I fix this?
Or do you think if there is anything wrong with my approach ?
这是我的完整来源",http://www.dotnetspider.com/attachments/Forums/310512-151022-QuestionBankAppMVC.zip" rel=“nofollow”>这里是,但无法向我的控制者问答。感谢您的意见和建议。