【发布时间】:2015-04-26 09:53:47
【问题描述】:
我正在尝试为正在评分的用户获取一个下拉列表。每个用户可以有多个评分。因此,当我创建一个新成绩时,我想要一个下拉菜单来指定哪些用户将获得该成绩。
我不断得到:
没有具有键“GradingId”的“IEnumerable”类型的 ViewData 项。
我已经查看了许多其他问题,但我无法确定我需要在控制器、视图或模型中进行哪些更改。
GradingController.cs
public ActionResult Create()
{
return View();
}
// POST: Gradings/Create
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create([Bind(Include = "GradingId,Eye,Cheek,Mouth,RestSymmetryTotal,RestSymmetryScore,VolForeheadWrinkle,VolGentleEyeClosure,VolOpenMouthSmile,VolSnarl,VolLipPucker,VolSymmetryTotal,VolSymmetryScore,SynForeheadWrinkle,SynGentleEyeClosure,SynOpenMouthSmile,SynSnarl,SynLipPucker,SynkinesisScore,CompositeScore")] Grading grading)
{
if (ModelState.IsValid)
{
grading.GradeDate = DateTime.Now;
db.Gradings.Add(grading);
db.SaveChanges();
return RedirectToAction("Index");
}
ViewBag.GradingId = new SelectList(db.Gradings, "GradingId", "CodeName");
return View(grading);
}
// GET: Gradings/Edit/5
public ActionResult Edit(int? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
Grading grading = db.Gradings.Find(id);
if (grading == null)
{
return HttpNotFound();
}
ViewBag.GradingId = new SelectList(db.Gradings, "GradingId", "CodeName");
return View(grading);
}
// POST: Gradings/Edit/5
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Edit([Bind(Include = "GradingId,Eye,Cheek,Mouth,RestSymmetryTotal,RestSymmetryScore,VolForeheadWrinkle,VolGentleEyeClosure,VolOpenMouthSmile,VolSnarl,VolLipPucker,VolSymmetryTotal,VolSymmetryScore,SynForeheadWrinkle,SynGentleEyeClosure,SynOpenMouthSmile,SynSnarl,SynLipPucker,SynkinesisScore,CompositeScore")] Grading grading)
{
if (ModelState.IsValid)
{
db.Entry(grading).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
}
ViewBag.GradingId = new SelectList(db.Gradings, "GradingId", "CodeName");
return View(grading);
}
Create.cshtml(视图)
@model FaceToFace.Model.Grading
<h2>Create</h2>
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
<div class="editor-label">
@Html.LabelFor(model => model.User.CodeName, "User Name")
</div>
<div class="editor-field">
@Html.DropDownList("GradingId", String.Empty)
</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>
}
grading.cs(模型)
namespace FaceToFace.Model
{
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Data.Entity.Spatial;
[Table("Grading")]
public partial class Grading
{
public int? User_UserID { get; set; }
public virtual User User { get; set; }
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public int GradingId { get; set; }
public DateTime GradeDate { get; set; }
public DateTime GradeEditDate { get; set; }
}
}
User.cs(模型)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace FaceToFace.Model
{
public class User
{
public virtual ICollection<Grading> UserGradings { get; set; }
}
}
【问题讨论】:
标签: c# asp.net asp.net-mvc linq entity