У меня есть представление "создать" в скаффолде, которое, когда я пытаюсь создать новую запись, возвращает ошибку: System.Web.Mvc.WebViewPage<TModel>.Model.get returned null
. Еще до того, как я нажал "сохранить".
Моя модель:
namespace Itucation.Models
{
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Data.Entity.Spatial;
[Table("jobcoach")]
public partial class jobcoach
{
public int kursist_id { get; set; }
//[Column(TypeName = "text")]
public string note { get; set; }
[Key]
public int jobcoach_note_id { get; set; }
[Column("status")]
//[StringLength(50)]
[Display(Name = "Status")]
public string status { get; set; }
[Column(TypeName = "date")]
[DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]
[Display(Name = "Success dato")]
public DateTime? succesDato { get; set; }
public int? AntalSamtaler { get; set; }
public virtual kursister kursister { get; set; }
}
}
Мой контроллер:
// GET: jobcoach/Create
public ActionResult Create(int? id)
{
ViewBag.kursist_id = new SelectList(db.kursister, "kursist_id", "fornavn");
ViewBag.status = new SelectList(db.JobcoachStatus, "status", "status");
ViewBag.ID = id;
ViewBag.kursist = (from k in db.kursister
where k.kursist_id == id
select k);
//var jc = db.jobcoach.Where(u => u.kursist_id == id).ToList().FirstOrDefault();
var jc = db.jobcoach.Where(r => r.kursist_id == id).ToList().FirstOrDefault();
if (jc == null)
{
// param is not set
}
else
{
return RedirectToAction("Edit/" + jc.jobcoach_note_id);
}
return View();
}
// POST: jobcoach/Create
// To protect from overposting attacks, please enable the specific properties you want to bind to, for
// more details see https://go.microsoft.com/fwlink/?LinkId=317598.
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create([Bind(Include = "jobcoach_note_id,kursist_id,note,status,succesDato, AntalSamtaler")] jobcoach jobcoach)
{
if (ModelState.IsValid)
{
//Brugernavn (current user) skal også indsættes
jobcoach.note = jobcoach.note + " Af " + User.Identity.Name + " - " + DateTime.Now.ToString();
db.jobcoach.Add(jobcoach);
db.SaveChanges();
return RedirectToAction("Index");
}
ViewBag.kursist_id = new SelectList(db.kursister, "kursist_id", "fornavn", jobcoach.kursist_id);
return View(jobcoach);
}
My View:
@model Itucation.Models.jobcoach
@{
ViewBag.Title = "Create";
}
<h2>Create</h2>
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
<div>
<h4>jobcoach</h4>
<hr />
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
<div>
@Html.LabelFor(model => model.kursist_id, "Kursist", htmlAttributes: new { @class = "control-label " })
<div>
@{
foreach (var navn in (ViewBag.kursist))
{
<text>Kursist ID: </text>@navn.kursist_id <br />
<text>Navn:</text> @navn.fornavn<text> </text> @navn.efternavn <br />
<text>E-mail: </text>@navn.mail
}
}
<input type="hidden" name="kursist_id" id="kursist_id" value="@ViewBag.ID" />
@*@Html.DropDownList("kursist_id", null, htmlAttributes: new { @class = "form-control" })*@
@Html.ValidationMessageFor(model => model.kursist_id, "", new { @class = "text-danger" })
</div>
</div>
<div>
@Html.LabelFor(model => model.note, htmlAttributes: new { @class = "control-label " })
<div>
@Html.TextAreaFor(model => model.note, new { @class = "form-control", @cols = "100%", @rows = "20", @tabindex = "21" })
@Html.ValidationMessageFor(model => model.note, "", new { @class = "text-danger" })
</div>
</div>
<div>
Status
<div>
<select id="status">
<option value="Uden status">Uden status </option>
<option value="Ordinær uddannelse">Ordinær uddannelse</option>
<option value="Deltidsjob">Deltidsjob</option>
<option value="Praktik">Praktik</option>
<option value="Løntilskud privat">Løntilskud privat</option>
<option value="Løntilskud offentlig">Løntilskud offentlig</option>
<option value="Ordinært job">Ordinært job</option>
</select>
</div>
</div>
<div>
Success dato
<div>
<input type="date" id="succesDato" name="succesDato" />
</div>
</div>
<div>
Antal samtaler
<div>
<input type="text" id="AntalSamtaler" name="AntalSamtaler" value="@Model.AntalSamtaler"/>
</div>
</div>
@*<div>
@Html.LabelFor(model => model.status, htmlAttributes: new { @class = "control-label " })
<div>
<select id="status" name="status" class="form-control ">
<option>Vælg evt. en status</option>
<option value="Ordinært job">Ordinært job</option>
<option value="Ordinær uddannelse">Ordinær uddannelse</option>
<option value="Deltidsjob">Deltidsjob</option>
<option value="Praktik">Praktik</option>
<option value="Løntilskud privat">Løntilskud privat</option>
<option value="Løntilskud offentlig">Løntilskud offentlig</option>
</select>
</div>
</div>*@
<div class="form-group col-md-12">
<div class="col-md-offset-2 col-md-1">
<input type="submit" value="Opret" class="btn btn-default" />
</div>
</div>
</div>
}
<div class="col-md-10">
@Html.ActionLink("Tilbage til listen", "Index")
</div>
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
}
Я бы ожидал «пустой» вид со всеми полями ввода, где я мог бы ввести дату и нажать «Сохранить». Вместо этого я получаю ошибку.
Ошибка возникает в строке: @Html.ValidationMessageFor(model => model.note, "", new { @class = "text-danger" })
.
Я не могу понять это. Я вижу много вопросов, касающихся этой ошибки, но ни один из них не подходит для моей проблемы.
Буду очень признателен за любую помощь.