Когда я вставляю значения в модель представления и отлаживаю, все значения в контроллере равны нулю, у меня есть
[HttpGet]
public IActionResult CreatePrescription(int id)
, который получает модель представления, а затем у меня есть
[HttpPost]
public IActionResult CreatePrescription(ViewModel model){
try
{
Prescription prescription = new Prescription
{
PatientId = model.Patient.Id,
MedicationId = model.Prescription.MedicationId,
RxNumber = model.Prescription.RxNumber,
Frequency = model.Prescription.Frequency,
Quantity = model.Prescription.Quantity,
Copay = model.Prescription.Copay,
RefillsRemaining = model.Prescription.RefillsRemaining,
FolderStatusId = model.Prescription.FolderStatusId,
PrescriberId = model.Prescription.PrescriberId,
OriginalRxDate = model.Prescription.OriginalRxDate,
DateFilled = model.Prescription.DateFilled,
ExpiryDate = model.Prescription.ExpiryDate,
DeliveryDate = model.Prescription.DeliveryDate,
DeliveryTime = model.Prescription.DeliveryTime,
BillDate = model.Prescription.BillDate,
ApplicationUserId = user,
CreatedOn = DateTime.Now,
IsActive = true
};
_context.Add(prescription);
_context.SaveChanges();
}
catch (Exception)
{
throw;
}
return View();
}
Вот часть вида
@model Systemz.Models.ViewModels.ViewModel
<div class="modal-body">
<form asp-action="CreatePrescription" asp-controller="Patients" method="post">
<input asp-for="Prescription.Id" type="hidden" />
<input asp-for="Patient.Id" type="hidden" />
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<div class="form-group">
<div class="row">
<div class="col-sm-3">
<label asp-for="Prescription.RxNumber" class="custom-label"></label>
</div>
<div class="col-sm-7">
<input asp-for="Prescription.RxNumber" class="form-control" />
</div>
<span asp-validation-for="Prescription.RxNumber" class="text-danger"></span>
</div>
</div>
<div class="form-group">
<div class="row">
<div class="col-sm-3">
<label asp-for="Prescription.Frequency" class="custom-label"></label>
</div>
<div class="col-sm-7">
<input asp-for="Prescription.Frequency" class="form-control" />
</div>
<span asp-validation-for="Prescription.Frequency" class="text-danger"></span>
</div>
</div>
<div class="form-group">
<div class="row">
<div class="col-sm-3">
<label asp-for="Prescription.Quantity" class="custom-label"></label>
</div>
<div class="col-sm-7">
<input asp-for="Prescription.Quantity" class="form-control" />
</div>
<span asp-validation-for="Prescription.Quantity" class="text-danger"></span>
</div>
</div>
А вот и класс
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace Systemz.Models,ViewModels
{
public class ViewModel
{
public Prescription Prescription {get;set;}
public IEnumerable<Prescription> Prescriptions {get;set;}
}
}
Вот мой контекст БД
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Identity.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore;
using Systemz.Models;
namespace Systemz.Data
{
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
public ApplicationDbContext()
{
}
public ApplicationDbContext(DbContextOptions<ApplicationDbContext>
options)
: base(options)
{
}
public DbSet<Patient> Patients { get; set; }
public DbSet<Address> Addresses { get; set; }
public DbSet<PhoneNumber> PhoneNumbers { get; set; }
public DbSet<Prescriber> Prescribers { get; set; }
public DbSet<Prescription> Prescriptions { get; set; }
protected override void OnModelCreating(ModelBuilder builder)
{
builder.Entity<PatientPrescriber>()
.HasKey(bc => new { bc.PatientId, bc. PrescriberID });
builder.Entity<PatientPrescriber>()
.HasOne(bc => bc.Patient)
.WithMany(b => b.PatientPrescribers)
.HasForeignKey(bc => bc.PatientId);
builder.Entity<PatientPrescriber>()
.HasOne(bc => bc.Prescriber)
.WithMany(c => c.PatientPrescribers)
.HasForeignKey(bc => bc.PrescriberId);
base.OnModelCreating(builder);
}
}
Все значения в IEnumerable<Prescription> Prescriptions {get;set;}
находятся в классе с именем Prescription. Вот отладка, которая показывает, что PatientId принят, но все остальные свойства имеют значение null PAtientId и Null Properties , почему мои значения не передаются в контроллер а не сохранение в базе?