MVC database fisrt EF
public partial class Cursos
{
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
public Cursos()
{
this.Marcações = new HashSet<Marcações>();
this.Módulos = new HashSet<Módulos>();
}
public int ID_Curso { get; set; }
public string ID_Entidade { get; set; }
public string Curso { get; set; }
public Nullable<System.DateTime> Data_Início { get; set; }
public Nullable<System.DateTime> Data_Fim { get; set; }
public Nullable<int> Localidade { get; set; }
public Nullable<int> Modalidade { get; set; }
public Nullable<int> Área { get; set; }
public Nullable<int> Horas { get; set; }
public string Observações { get; set; }
public virtual Áreas Áreas { get; set; }
public virtual Entidades Entidades { get; set; }
public virtual Localidades Localidades { get; set; }
public virtual Modalidades Modalidades { get; set; }
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
public virtual ICollection<Marcações> Marcações { get; set; }
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
public virtual ICollection<Módulos> Módulos { get; set; }
}
}
public partial class Módulos
{
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
public Módulos()
{
this.Marcações = new HashSet<Marcações>();
}
public int ID_Módulo { get; set; }
public string ID_Entidade { get; set; }
public Nullable<int> ID_Curso { get; set; }
public Nullable<int> ID_Formador { get; set; }
public string Módulo { get; set; }
public Nullable<int> Área { get; set; }
public Nullable<int> Duração { get; set; }
public virtual Áreas Áreas { get; set; }
public virtual Cursos Cursos { get; set; }
public virtual Entidades Entidades { get; set; }
public virtual Formadores Formadores { get; set; }
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
public virtual ICollection<Marcações> Marcações { get; set; }
}
}
public partial class Marcações
{
public int ID_Marcação { get; set; }
public string ID_Entidade { get; set; }
public Nullable<int> ID_Curso { get; set; }
public Nullable<int> ID_Módulo { get; set; }
public Nullable<System.DateTime> Data { get; set; }
public Nullable<int> Hora { get; set; }
public virtual Cursos Cursos { get; set; }
public virtual Entidades Entidades { get; set; }
public virtual Horas Horas { get; set; }
public virtual Módulos Módulos { get; set; }
}
}
Database first!!!!
so in my Create view i have:
@model ora.Marcações
@{
ViewBag.Title = "Create";
}
<h2>Create</h2>
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
<div class="form-horizontal">
<h4>Marcações</h4>
<hr />
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
<div class="form-group">
@Html.LabelFor(model => model.ID_Entidade, "ID_Entidade", htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.DropDownList("ID_Entidade", null, htmlAttributes: new { @class = "form-control" })
@Html.ValidationMessageFor(model => model.ID_Entidade, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(m => m.Cursos, new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.DropDownListFor(m => m.Cursos,
new SelectList(ViewBag.Cursos, "ID_Curso", "Curso"),
"Selecione Curso",
new { @class = "form-control", @onchange = "FillMódulo()" })
@Html.ValidationMessageFor(m => m.Cursos, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(m => m.Módulos, new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.DropDownListFor(m => m.Módulos,
new SelectList(Enumerable.Empty<SelectListItem>(), "ID_Módulo", "Módulo"),
"Selecione Módulo",
new { @class = "form-control" })
@Html.ValidationMessageFor(m => m.Módulos, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.Data, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.Data, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.Data, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.Hora, "Hora", htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.DropDownList("Hora", null, htmlAttributes: new { @class = "form-control" })
@Html.ValidationMessageFor(model => model.Hora, "", 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>
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
@Scripts.Render("~/bundles/ajax")
<script>
function FillMódulo() {
var cursoId = $('#Cursos').val();
$.ajax({
url: '/Marcações/FillMódulo',
type: "GET",
dataType: "JSON",
data: { Cursos: cursoId},
success: function (modulos) {
$("#Módulos").html(""); // clear before appending new list
$.each(modulos, function (i, modulo) {
$("#Módulos").append(
$('<option></option>').val(modulo.ID_Módulo).html(modulo.Módulo));
});
}
});
}
</script>
}
marcações controller :
// GET: Marcações/Create
public ActionResult Create()
{
// ViewBag.ID_Curso = new SelectList(db.Cursos, "ID_Curso", "ID_Curso");
ViewBag.ID_Entidade = new SelectList(db.Entidades, "ID_Entidade", "Entidade_Formadora");
ViewBag.Hora = new SelectList(db.Horas, "ID_Hora", "Hora");
// ViewBag.ID_Módulo = new SelectList(db.Módulos, "ID_Módulo", "ID_Módulo");
ViewBag.Cursos = db.Cursos;
return View();
}
// POST: Marcações/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 = "ID_Marcação,ID_Entidade,ID_Curso,ID_Módulo,Data,Hora")] Marcações marcações)
{
if (ModelState.IsValid)
{
db.Marcações.Add(marcações);
db.SaveChanges();
return RedirectToAction("Index");
}
// ViewBag.ID_Curso = new SelectList(db.Cursos, "ID_Curso", "ID_Curso", marcações.ID_Curso);
ViewBag.ID_Entidade = new SelectList(db.Entidades, "ID_Entidade", "Entidade_Formadora", marcações.ID_Entidade);
ViewBag.Hora = new SelectList(db.Horas, "ID_Hora", "Hora", marcações.Hora);
// ViewBag.ID_Módulo = new SelectList(db.Módulos, "ID_Módulo", "ID_Módulo", marcações.ID_Módulo);
ViewBag.Cursos = db.Cursos;
return View(marcações);
}
public ActionResult FillMódulo(int state)
{
var cities = db.Módulos.Where(c => c.ID_Curso == state);
return Json(cities, JsonRequestBehavior.AllowGet);
}
Why Cursos don't update Módulos "on change"?
Can u help ?