如何以相同的形式向数据库输入多个记录

时间:2014-11-22 10:42:28

标签: c# asp.net-mvc

我有这些表

  • Survey:SurveyId,UserId,QuestionId,Answer,Comment
  • User:UserId,Name
  • Question:QuestionId,QuestionText

如何为1位用户制作表格以回答所有问题(90个问题)并在db中保存答案和评论?

SurveysController

public class SurveysController : Controller
{
    private OrganizationASEMEntities1 db = new OrganizationASEMEntities1();

    // GET: Surveys
    public ActionResult Index()
    {
        var surveys = db.Surveys.Include(s => s.Question).Include(s => s.User);
        return View(surveys.ToList());
    }

    // GET: Surveys/Details/5
    public ActionResult Details(int? id)
    {
        if (id == null)
        {
            return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
        }
        Survey survey = db.Surveys.Find(id);
        if (survey == null)
        {
            return HttpNotFound();
        }
        return View(survey);
    }

    // GET: Surveys/Create
    public ActionResult Create()
    {
        ViewBag.QuestionId = new SelectList(db.Questions, "QuestionId", "QuestionText");
        ViewBag.UserId = new SelectList(db.Users, "UserId", "Name");
        return View();
    }

    // POST: Surveys/Create
    // To protect from overposting attacks, please enable the specific properties you want to bind to, for 
    // more details see http://go.microsoft.com/fwlink/?LinkId=317598.
    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Create([Bind(Include = "SurveyId,UserId,QuestionId,Answer,Comment")] Survey survey)
    {
        if (ModelState.IsValid)
        {
            db.Surveys.Add(survey);
            db.SaveChanges();
            return RedirectToAction("Index");
        }

        ViewBag.QuestionId = new SelectList(db.Questions, "QuestionId", "QuestionText", survey.QuestionId);
        ViewBag.UserId = new SelectList(db.Users, "UserId", "Name", survey.UserId);
        return View(survey);
    }

    // GET: Surveys/Edit/5
    public ActionResult Edit(int? id)
    {
        if (id == null)
        {
            return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
        }
        Survey survey = db.Surveys.Find(id);
        if (survey == null)
        {
            return HttpNotFound();
        }
        ViewBag.QuestionId = new SelectList(db.Questions, "QuestionId", "QuestionText", survey.QuestionId);
        ViewBag.UserId = new SelectList(db.Users, "UserId", "Name", survey.UserId);
        return View(survey);
    }

    // POST: Surveys/Edit/5
    // To protect from overposting attacks, please enable the specific properties you want to bind to, for 
    // more details see http://go.microsoft.com/fwlink/?LinkId=317598.
    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Edit([Bind(Include = "SurveyId,UserId,QuestionId,Answer,Comment")] Survey survey)
    {
        if (ModelState.IsValid)
        {
            db.Entry(survey).State = EntityState.Modified;
            db.SaveChanges();
            return RedirectToAction("Index");
        }
        ViewBag.QuestionId = new SelectList(db.Questions, "QuestionId", "QuestionText", survey.QuestionId);
        ViewBag.UserId = new SelectList(db.Users, "UserId", "Name", survey.UserId);
        return View(survey);
    }

    // GET: Surveys/Delete/5
    public ActionResult Delete(int? id)
    {
        if (id == null)
        {
            return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
        }
        Survey survey = db.Surveys.Find(id);
        if (survey == null)
        {
            return HttpNotFound();
        }
        return View(survey);
    }

    // POST: Surveys/Delete/5
    [HttpPost, ActionName("Delete")]
    [ValidateAntiForgeryToken]
    public ActionResult DeleteConfirmed(int id)
    {
        Survey survey = db.Surveys.Find(id);
        db.Surveys.Remove(survey);
        db.SaveChanges();
        return RedirectToAction("Index");
    }

    protected override void Dispose(bool disposing)
    {
        if (disposing)
        {
            db.Dispose();
        }
        base.Dispose(disposing);
    }
}

调查视图Create

@model OrganizationASEM.Models.Survey

@{
    ViewBag.Title = "Create";
}

<h2>Create</h2>

@using (Html.BeginForm()) 
{
    @Html.AntiForgeryToken()

    <div class="form-inline">
        <h4>Survey</h4>
        <hr />
        @Html.ValidationSummary(true, "", new { @class = "text-danger" })
        <div class="form-group">
            @Html.LabelFor(model => model.UserId, "UserId", htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.DropDownList("UserId", null, htmlAttributes: new { @class = "form-control" })
                @Html.ValidationMessageFor(model => model.UserId, "", new { @class = "text-danger" })
            </div>
        </div>

        <div class="form-group">
            @Html.LabelFor(model => model.QuestionId, "QuestionId", htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.DropDownList("QuestionId", null, htmlAttributes: new { @class = "form-control" })
                @Html.ValidationMessageFor(model => model.QuestionId, "", new { @class = "text-danger" })
            </div>
        </div>

        <div class="form-group">
            @Html.LabelFor(model => model.Answer, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.EditorFor(model => model.Answer, new { htmlAttributes = new { @class = "form-control" } })
                @Html.ValidationMessageFor(model => model.Answer, "", new { @class = "text-danger" })
            </div>
        </div>

        <div class="form-group">
            @Html.LabelFor(model => model.Comment, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.EditorFor(model => model.Comment, new { htmlAttributes = new { @class = "form-control" } })
                @Html.ValidationMessageFor(model => model.Comment, "", new { @class = "text-danger" })
            </div>
        </div>

        <div class="form-group">
            <div class="col-md-offset-2 col-md-10">
                <input type="submit" value="Create" class="btn btn-default" />
            </div>
        </div>
    </div>
}

<div>
    @Html.ActionLink("Back to List", "Index")
</div>

0 个答案:

没有答案
相关问题