Robię projekt w programie Visual Studio na platformie asp net framework mvc .
Chce zrobić pole w którym będzie wyświetlało i zapisywało dane pobrane z Dropdownlist i zapisywało do tabeli w bazie danych. Zrobiłem elementy które pobierają mi dane z bazy do Dropdownlist.
Nie umiem zakodować funkcji która po wyborze specjalisty(id), lekarza, wizyty będzie wstawiała np. nazwę specjalisty do pola Tekstowego. Tak samo powinno działać pole z imieniem i nazwiskiem lekarza oraz wizyta(jako godz).
Funkcja która pobiera i wyświetla nazwę specjalisty, imię,nazwisko lekarza zrobiłem z tutoriala na youtubie a nie umiem zrobić dalej . Nie ogarniam kodowania w js, nie wiem czy jest prostszy sposób na rozwiązanie problemu.
Prosze o pomoc
Okno widoku create
@model Terminarz.Models.KartaRezerwacji
@{
ViewBag.Title = "Rezerwaccja wizyty";
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<title>Rezerwacja</title>
@Styles.Render("~/Style/style.css")
</head>
<body>
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
<div class="form-horizontal" style="color:black; font-size:20px;">
<h4>Zrób rezerwacje wizyty</h4>
<hr />
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
<div class="form-group">
<h3 class="control-label col-md-2">Specjalista:</h3>
<div class="col-md-10">
@if (ViewBag.SpecjalistaList != null)
{
@Html.DropDownListFor(model => model.IdSpecjalista, ViewBag.SpecjalistaList as SelectList, "-Wybierz specjaliste-", new { @class = "form-control" })
}
</div>
</div>
<div class="form-group" hidden>
<h3 class="control-label col-md-2">Specjalista:</h3>
<div class="col-md-10">
<input type="text" value="" /> @* tu powinno zaciągnąć nazwe specjalisty jakiego wybierze uzytkownik z dropdownlist z tabeli specjalista*@
</div>
</div>
<div class="form-group">
<h3 class="control-label col-md-2">Lekarz:</h3>
<div class="col-md-10">
@Html.DropDownListFor(model => model.IdLekarza, new SelectList(" "), "-Wybierz lekarza-", new { @class = "form-control" })
</div>
</div>
<div class="form-group" hidden>
<h3 class="control-label col-md-2">Imie lekarza</h3>
<div class="col-md-10">
<input type="text" value="" /> @* tu powinno zaciągnąć imie lekarz które uzytkownik wybierze z dropdownlist z tabeli lekarzy*@
</div>
</div>
<div class="form-group" hidden>
<h3 class="control-label col-md-2">Nazwisko lekarza</h3>
<div class="col-md-10">
<input type="text" value="" /> @* tu powinno zaciągnąć nazwisko lekarza które uzytkownik wybierze z dropdownlist z tabeli lekarzy*@
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.IdWizyta, "Godzina wizyty:", htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.DropDownList("IdWizyta", null, htmlAttributes: new { @class = "form-control" })
@Html.ValidationMessageFor(model => model.IdWizyta, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
<h3 class="control-label col-md-2">Godzina</h3>
<div class="col-md-10">
<input type="text" value="" /> @* tu powinno zaciągnąć wybraną przez uzytkownika godzinę, której id jest pobierane z tabeli*@
</div>
</div>
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Zatwierdź" class="btn btn-default" />
</div>
</div>
</div>
}
<script src="~/Scripts/jquery-3.4.0.min.js"></script>
<script>
$(document).ready(function () {
$("#IdSpecjalista").change(function () {
$.get("/KartaRezerwacji/GetLekarzList", { IdSpecjalista: $("#IdSpecjalista").val() }, function (data) {
$("#IdLekarza").empty();
$.each(data, function (index, row) {
$("#IdLekarza").append("<option value='" + row.IdLekarza + "'>'" + row.LekarzNazwisko + "'</option>")
});
});
})
});
</script>
<div>
@Html.ActionLink("Back to List", "Index")
</div>
</body>
</html>
Kod kontrolera :
using Microsoft.AspNet.Identity;
using PagedList;
using System.Collections.Generic;
using System.Data;
using System.Data.Entity;
using System.Linq;
using System.Net;
using System.Web.Mvc;
using Terminarz.Models;
namespace Terminarz.Controllers
{
public class KartaRezerwacjiController : Controller
{
private TerminarzContext db = new TerminarzContext();
public JsonResult GetLekarzList(int IdSpecjalista)
{
db.Configuration.ProxyCreationEnabled = false;
List<Lekarz> LekarzList = db.Lekarze.Where(x => x.IdSpecjalista == IdSpecjalista).ToList();
return Json(LekarzList, JsonRequestBehavior.AllowGet);
}
public ActionResult Create()
{
List<Specjalista> SpecjalistaList = db.Specjaliści.ToList();
ViewBag.SpecjalistaList = new SelectList(SpecjalistaList, "IdSpecjalista", "NazwaSpecjalisty");
ViewBag.Email = User.Identity.GetUserName();
ViewBag.IdWizyta = new SelectList(db.Wizyty, "IdWizyta", "Godzina");
return View();
}
// POST: KartaRezerwacji/Create
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create([Bind(Include = "IdKartaRezerwacji,Email,DataWizyty,Telefon,IdSpecjalista,NazwaSpecjalisty,IdLekarza,ImieLekarza,NazwiskoLekarza,IdWizyta,Godzina")] KartaRezerwacji kartaRezerwacji,Specjalista specjalista,Lekarz lekarz)
{
string email = User.Identity.GetUserName();
if (ModelState.IsValid)
{
kartaRezerwacji.Email = email;
db.KartaRezerwacji.Add(kartaRezerwacji);
db.SaveChanges();
return RedirectToAction("KartaUzytkownika");
}
ViewBag.IdLekarza = new SelectList(db.Lekarze, "IdLekarza", "LekarzNazwisko", kartaRezerwacji.LekarzNazwisko);
ViewBag.IdSpecjalista = new SelectList(db.Specjaliści, "IdSpecjalista", "NazwaSpecjalisty", kartaRezerwacji.IdSpecjalista);
ViewBag.IdWizyta = new SelectList(db.Wizyty, "IdWizyta", "Godzina", kartaRezerwacji.IdWizyta);
return View(kartaRezerwacji);
}
}
}
Model klasy:
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Terminarz.Models
{
public class KartaRezerwacji
{
[Key]
[Display(Name = "IdKartaRezerwacji")]
public int IdKartaRezerwacji { get; set; }
[Display(Name = "Email")]
public string Email { get; set; }
[Required(ErrorMessage = "Proszę wybrać datę wizyty")]
//[Display(Name = "Data wizyty")]
[DataType(DataType.Date, ErrorMessage = "Niepoprawny format daty")]
[DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]
public System.DateTime DataWizyty { get; set; }
[Required(ErrorMessage = "Proszę wproawdzić numer teleofnu")]
[Display(Name = "Telefon")]
[DataType(DataType.PhoneNumber)]
[RegularExpression(@"^\(?([0-9]{3})\)?[-. ]?([0-9]{3})[-. ]?([0-9]{3})$", ErrorMessage = "Nieprawidłowy numer telefonu")]
public int Telefon { get; set; }
public virtual Uzytkownik Uzytkownicy { get; set; }
[Display(Name = "Identyfikator specjalisty")]
public int IdSpecjalista { get; set; }
[Display(Name = "Nazwa specjalisty")]
public string NazwaSpecjalisty { get; set; }
public virtual Specjalista Specjalista { get; set; }
[Display(Name = "Identyfikator lekarza")]
public int IdLekarza { get; set; }
[Display(Name = "Imie lekarza")]
public string ImieLekarza { get; set; }
[Display(Name = "Nazwisko lekarza")]
public string NazwiskoLekarza { get; set; }
#region dodatkowe pole not mapped
[NotMapped]
[Display(Name = "Lekarz")]
public string LekarzNazwisko { get { return ImieLekarza + " " + NazwiskoLekarza; } }
#endregion
public virtual Lekarz Lekarz { get; set; }
//[Display(Name = "Identyfikator usługi")]
//public int IdUsługa { get; set; }
//[Display(Name = "Nazwa usługi")]
//public string NazwaUsługi { get; set; }
//public virtual Usługa Usługa { get; set; }
[Display(Name = "Identyfikator wizyty")]
public int IdWizyta { get; set; }
[Display(Name = "Godzina")]
public string Godzina { get; set; }
public virtual Wizyta Wizyta { get; set; }
}
}