現在、モデルで文字列からモデルに変換できないというエラーが発生しています。これは、新しいデータベーステーブルエントリを追加しようとすると発生します。私はSQLServerを使用しており、フロントエンドにはc#mvc3razorviewを使用しています。
モデル:
namespace NBProfiler.Model
{
using System;
using System.Collections.Generic;
public partial class PersonContempancy
{
public int Id { get; set; }
public int PersonId { get; set; }
public Nullable<System.DateTime> AttainedDate { get; set; }
public int FrameworkId { get; set; }
public int ContempancyCategoryId { get; set; }
public int ContempancyId { get; set; }
public int ContempancyLevelId { get; set; }
public int FrameworkLevelId { get; set; }
public virtual Contempancy Contempancy { get; set; }
public virtual ContempancyCategory ContempancyCategory { get; set; }
public virtual FrameworkLevel FrameworkLevel { get; set; }
public virtual Framework Framework { get; set; }
public virtual Person Person { get; set; }
public virtual ContempancyLevel ContempancyLevel { get; set; }
}
}
コントローラ:
public ActionResult Create()
{
ViewBag.Contepancies = db.Contempancies.ToList();
ViewBag.ContempancyCategory = db.ContempancyCategories.ToList();
ViewBag.ContempancyLevel = db.ContempancyLevels.ToList();
ViewBag.FrameworkLevel = db.FrameworkLevels.ToList() ;
ViewBag.Person = db.People.ToList();
ViewBag.Framework = db.Frameworks.ToList();
return View();
}
//
// POST: /Mapping/Create
[HttpPost]
public ActionResult Create(PersonContempancy personcontempancy)
{
if (ModelState.IsValid)
{
db.PersonContempancies.Add(personcontempancy);
db.SaveChanges();
return RedirectToAction("Index");
}
ViewBag.Contepancies = db.Contempancies.ToList();
ViewBag.ContempancyCategory = db.ContempancyCategories.ToList();
ViewBag.ContempancyLevel = db.ContempancyLevels.ToList();
ViewBag.FrameworkLevel = db.FrameworkLevels.ToList();
ViewBag.Person = db.People.ToList();
ViewBag.Framework = db.Frameworks.ToList();
return View(personcontempancy);
}
そして最後にビュー:(他のアイテムはすべて同じコードであるため、ビューから削除したので、ここで短くするために削除しました)
@model NBProfiler.Model.PersonContempancy
@{
ViewBag.Title = "Create";
}
<h2>Map Skill to Person</h2>
<script src="../../Scripts/jquery-1.5.1.min.js" type="text/javascript"></script>
<link href="../../Content/themes/start/jquery-ui-1.8.22.custom.css" rel="stylesheet"
type="text/css" />
<script src="../../Scripts/jquery-ui-1.8.11.min.js" type="text/javascript"></script>
@using (Html.BeginForm()) {
@Html.ValidationSummary(true)
<fieldset>
<legend>PersonContempancy</legend>
<div class="editor-label">
Name:
</div>
<div class="editor-field">
Html.DropDownListFor(m => m.Person, new SelectList(ViewBag.Person as System.Collections.IEnumerable, "PersonId", "PersonName"), "Choose Name")
</div>
@*<div class="editor-field">*@
<div class="editor-label">
@*@Html.LabelFor(m => m.ContempancyCategory)*@
</div>
<div class="editor-field">
@Html.DropDownListFor(m => m.ContempancyCategory, new SelectList(ViewBag.ContempancyCategory as System.Collections.IEnumerable, "ContempancyCategoryId", "ContempancyCategoryName"),"Select", new {id = "category" })
<p>
<input name="submit" type="submit" value="Map Skill" />
</p>
</fieldset>
}
<div>
@Html.ActionLink("Show Table", "Index")
</div>
<script type="text/javascript">
$(document).ready(function () {
$("#category").change(function () {
var idCat = $(this).val();
$.getJSON("/Mapping/contempancies", { CategoryID: idCat },
function (MyData) {
var select = $("#contempancy");
select.empty();
$.each(MyData,function(index, itemData) {
select.append($('<option/>', {
value: itemData.Value,
text: itemData.Text
}));
});
});
});
});
</script>
ありがとう!