Asp.net core mvc 局部视图中未保存任何数据

Asp.net core mvc 局部视图中未保存任何数据,asp.net-core-mvc,entity-framework-core,Asp.net Core Mvc,Entity Framework Core,我正在尝试保存在父编辑操作中调用的局部视图上更新的数据。但更新后的数据不会保存 我有一个父表'Nz'和一个子表'Mkh',并尝试在'Nz'编辑操作中检索它的所有数据作为部分视图,以便用户更新它。 数据检索正确,但当用户更新数据并按“提交”时,不会保存任何数据! 另一方面,我想检索具有返回值的“Select”项,而不是普通的文本项 这是我的代码: //Nz model: public partial class Nz { public Nz() {

我正在尝试保存在父编辑操作中调用的局部视图上更新的数据。但更新后的数据不会保存

我有一个父表'Nz'和一个子表'Mkh',并尝试在'Nz'编辑操作中检索它的所有数据作为部分视图,以便用户更新它。 数据检索正确,但当用户更新数据并按“提交”时,不会保存任何数据! 另一方面,我想检索具有返回值的“Select”项,而不是普通的文本项

这是我的代码:

//Nz model:
    public partial class Nz
    {
        public Nz()
        {
            Mkh = new HashSet<Mkh>();
        }
        [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:#########}")]
        public decimal TxtId { get; set; }
        public int Sn { get; set; }
        public string FullName { get; set; }
        [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:yyyy-MM-dd}")]
        public DateTime? BirthDate { get; set; }
        public int SexCode { get; set; }
        public string InsertUser { get; set; }
        [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:yyyy-MM-dd}")]
        public DateTime InsertDate { get; set; }

        public ICollection<Mkh> Mkh { get; set; }
    }
//Mkh Model:
    public partial class Mkh
    {
        public int Sn { get; set; }
        public decimal TxtId { get; set; }
        public int MkhCode { get; set; }
        [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:yyyy-MM-dd}")]
        public DateTime MkhDate { get; set; }
        public int Days { get; set; }
        public string Notes { get; set; }
        public string InsertUser { get; set; }
        [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:yyyy-MM-dd}")]
        public DateTime InsertDate { get; set; }


        public MkhType MkhCodeNavigation { get; set; }
        public Nz Txt { get; set; }
    }
//MkhType Model:
    public partial class MkhType
    {
        public MkhType()
        {
            Mkh = new HashSet<Mkh>();
        }

        public int MkhCode { get; set; }
        public string MkhName { get; set; }
        public string InsertUser { get; set; }
        public DateTime InsertDate { get; set; }

        public ICollection<Mkh> Mkh { get; set; }
    } 
//新西兰型号:
新西兰公共部分类
{
公共新西兰()
{
Mkh=新的HashSet();
}
[DisplayFormat(ApplyFormatInEditMode=true,DataFormatString=“{0:#########}”)]
公共十进制TxtId{get;set;}
公共int Sn{get;set;}
公共字符串全名{get;set;}
[DisplayFormat(ApplyFormatInEditMode=true,DataFormatString=“{0:yyyy-MM-dd}”)]
公共日期时间?生日{get;set;}
公共整数SexCode{get;set;}
公共字符串插入器{get;set;}
[DisplayFormat(ApplyFormatInEditMode=true,DataFormatString=“{0:yyyy-MM-dd}”)]
公共日期时间插入日期{get;set;}
公共ICollection Mkh{get;set;}
}
//Mkh型号:
公共部分类Mkh
{
公共int Sn{get;set;}
公共十进制TxtId{get;set;}
公共int MkhCode{get;set;}
[DisplayFormat(ApplyFormatInEditMode=true,DataFormatString=“{0:yyyy-MM-dd}”)]
公共日期时间MkhDate{get;set;}
公共整数天{get;set;}
公共字符串注释{get;set;}
公共字符串插入器{get;set;}
[DisplayFormat(ApplyFormatInEditMode=true,DataFormatString=“{0:yyyy-MM-dd}”)]
公共日期时间插入日期{get;set;}
公共MkhType MkhCodeNavigation{get;set;}
公共Nz Txt{get;set;}
}
//MkhType型号:
公共部分类MkhType
{
公共MkhType()
{
Mkh=新的HashSet();
}
公共int MkhCode{get;set;}
公共字符串MkhName{get;set;}
公共字符串插入器{get;set;}
公共日期时间插入日期{get;set;}
公共ICollection Mkh{get;set;}
} 
以下是我的背景:

public partial class NozContext : DbContext
{
    public NozContext()
    {
    }

    public NozContext(DbContextOptions<NozContext> options)
        : base(options)
    {
    }

    public virtual DbSet<Mkh> Mkh { get; set; }
    public virtual DbSet<MkhType> MkhType { get; set; }
    public virtual DbSet<Nz> Nz { get; set; }
    public virtual DbSet<Sex> Sex { get; set; }

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        if (!optionsBuilder.IsConfigured)
        {
            optionsBuilder.UseSqlServer("Server=My-PC\\SQLEXPRESS;Database=Noz;Trusted_Connection=True;");
        }
    }

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {

        modelBuilder.Entity<Mkh>(entity =>
        {
            entity.HasKey(e => e.Sn);

            entity.ToTable("Mkh");

            entity.Property(e => e.Sn).HasColumnName("sn");

            entity.Property(e => e.Days).HasColumnName("days");

            entity.Property(e => e.InsertDate)
                .HasColumnName("insert_date")
                .HasColumnType("datetime")
                .HasDefaultValueSql("(getdate())");

            entity.Property(e => e.InsertUser)
                .IsRequired()
                .HasColumnName("insert_user")
                .HasMaxLength(20)
                .HasDefaultValueSql("(N'any')");

            entity.Property(e => e.MkhCode).HasColumnName("Mkh_code");

            entity.Property(e => e.MkhDate)
                .HasColumnName("Mkh_date")
                .HasColumnType("date");

            entity.Property(e => e.Notes).HasColumnName("notes");

            entity.Property(e => e.TxtId)
                .HasColumnName("txt_id")
                .HasColumnType("numeric(9, 0)");

            entity.HasOne(d => d.MkhCodeNavigation)
                .WithMany(p => p.Mkh)
                .HasForeignKey(d => d.MkhCode)
                .OnDelete(DeleteBehavior.ClientSetNull)
                .HasConstraintName("FK_Mkh_Mkh_type");

            entity.HasOne(d => d.Txt)
                .WithMany(p => p.Mkh)
                .HasForeignKey(d => d.TxtId)
                .OnDelete(DeleteBehavior.ClientSetNull)
                .HasConstraintName("FK_Mkh_Nz");
        });

        modelBuilder.Entity<MkhType>(entity =>
        {
            entity.HasKey(e => e.MkhCode);

            entity.ToTable("Mkh_type");

            entity.Property(e => e.MkhCode).HasColumnName("Mkh_code");

            entity.Property(e => e.InsertDate)
                .HasColumnName("insert_date")
                .HasColumnType("datetime")
                .HasDefaultValueSql("(getdate())");

            entity.Property(e => e.InsertUser)
                .IsRequired()
                .HasColumnName("insert_user")
                .HasMaxLength(20)
                .HasDefaultValueSql("(N'any')");

            entity.Property(e => e.MkhName)
                .IsRequired()
                .HasColumnName("Mkh_name")
                .HasMaxLength(50);
        });

        modelBuilder.Entity<Nz>(entity =>
        {
            entity.HasKey(e => e.TxtId);

            entity.ToTable("Nz");

            entity.Property(e => e.TxtId)
                .HasColumnName("txt_id")
                .HasColumnType("numeric(9, 0)");

            entity.Property(e => e.BirthDate)
                .HasColumnName("birth_date")
                .HasColumnType("date");


            entity.Property(e => e.InsertDate)
                .HasColumnName("insert_date")
                .HasColumnType("datetime")
                .HasDefaultValueSql("(getdate())");

            entity.Property(e => e.InsertUser)
                .IsRequired()
                .HasColumnName("insert_user")
                .HasMaxLength(20)
                .HasDefaultValueSql("(N'any')");

            entity.Property(e => e.SexCode).HasColumnName("sex_code");

            entity.Property(e => e.Sn)
                .HasColumnName("sn")
                .ValueGeneratedOnAdd();

            entity.HasOne(d => d.SexCodeNavigation)
                .WithMany(p => p.Nz)
                .HasForeignKey(d => d.SexCode)
                .OnDelete(DeleteBehavior.ClientSetNull)
                .HasConstraintName("FK_Nz_sex");
        });

        modelBuilder.Entity<Sex>(entity =>
        {
            entity.HasKey(e => e.SexCode);

            entity.ToTable("sex");

            entity.Property(e => e.SexCode).HasColumnName("sex_code");

            entity.Property(e => e.SexName)
                .IsRequired()
                .HasColumnName("sex_name")
                .HasMaxLength(10);
        });

        modelBuilder.Entity<Nz>()
        .HasAlternateKey(x => x.Sn).HasName("IX_Sn");
    }
}
公共部分类NozContext:DbContext
{
公共NozContext()
{
}
公共NozContext(DbContextOptions)
:基本(选项)
{
}
公共虚拟数据库集Mkh{get;set;}
公共虚拟数据库集MkhType{get;set;}
公共虚拟数据库集Nz{get;set;}
公共虚拟数据库集{get;set;}
配置时受保护的覆盖无效(DBContextOptions Builder Options Builder)
{
如果(!optionBuilder.IsConfigured)
{
optionsBuilder.UseSqlServer(“服务器=我的电脑\\SQLEXPRESS;数据库=Noz;可信连接=True;”);
}
}
模型创建时受保护的覆盖无效(ModelBuilder ModelBuilder)
{
modelBuilder.Entity(Entity=>
{
entity.HasKey(e=>e.Sn);
实体。可转让(“Mkh”);
entity.Property(e=>e.Sn).HasColumnName(“Sn”);
entity.Property(e=>e.Days).HasColumnName(“Days”);
Property(e=>e.InsertDate)
.HasColumnName(“插入日期”)
.HasColumnType(“日期时间”)
.HasDefaultValueSql(“(getdate())”);
entity.Property(e=>e.InsertUser)
.IsRequired()
.HasColumnName(“插入用户”)
.HasMaxLength(20)
.HasDefaultValueSql(“任何”);
Property(e=>e.MkhCode).HasColumnName(“Mkh_代码”);
Property(e=>e.MkhDate)
.HasColumnName(“Mkh_日期”)
.HasColumnType(“日期”);
entity.Property(e=>e.Notes).HasColumnName(“Notes”);
Property(e=>e.TxtId)
.HasColumnName(“txt\U id”)
.HasColumnType(“数字(9,0)”);
entity.HasOne(d=>d.MkhCodeNavigation)
.WithMany(p=>p.Mkh)
.HasForeignKey(d=>d.MkhCode)
.OnDelete(DeleteBehavior.ClientSetNull)
.HasConstraintName(“FK_Mkh_Mkh_类型”);
entity.HasOne(d=>d.Txt)
.WithMany(p=>p.Mkh)
.HasForeignKey(d=>d.TxtId)
.OnDelete(DeleteBehavior.ClientSetNull)
.HasConstraintName(“FK_Mkh_Nz”);
});
modelBuilder.Entity(Entity=>
{
entity.HasKey(e=>e.MkhCode);
实体。可转帐(“Mkh_类型”);
Property(e=>e.MkhCode).HasColumnName(“Mkh_代码”);
Property(e=>e.InsertDate)
.HasColumnName(“插入日期”)
.HasColumnType(“日期时间”)
.HasDefaultValueSql(“(getdate())”);
entity.Property(e=>e.InsertUser)
.IsRequired()
.HasColumnName(“插入用户”)
.HasMaxLength(20)
.HasDefaultValueSql(“任何”);
Property(e=>e.MkhName)
.IsRequired()
.HasColumnName(“Mkh_名称”)
.HasMaxLength(50);
});
modelBuilder.Entity(Entity=>
{
entity.HasKey(e=>e.TxtId);
实体。可转让(“新西兰”);
Property(e=>e.TxtId)
.HasColumnName(“txt\U id”)
.HasColumnType(“数字(9,0)”);
entity.Property(e=>e.BirthDate)
.HasColumnName(“出生日期”)
.HasColumnType(“日期”);
Property(e=>e.InsertDate)
.HasColumnName(“插入日期”)
.HasColumnType(“日期时间”)
.HasDefaultValueSql(“(getdate())”);
entity.Property(e=>e.InsertUser)
.IsRequired()
public class NzController : Controller
{
    private readonly NozContext _context;

    public NzController(NozContext context)
    {
        _context = context;
    }
// ........ Some Code here .............
public async Task<IActionResult> Edit(decimal? id)
    {
        if (id == null)
        {
            return NotFound();
        }

        //var Nz = await _context.Nz.FindAsync(id);
        var Nz = await _context.Nz
                     .Include(n => n.Mkh)
                     .ThenInclude(m => m.MkhCodeNavigation)
                     .FirstOrDefaultAsync(n => n.TxtId == id.Value);
        if (Nz == null)
        {
            return NotFound();
        }
        ViewData["SexCode"] = new SelectList(_context.Sex, "SexCode", "SexName", Nz.SexCode);
        return View(Nz);
    }

    [HttpPost]
    [ValidateAntiForgeryToken]
    public async Task<IActionResult> Edit(decimal id, [Bind("TxtId,Sn,FullName,BirthDate,SexCode,InsertUser,InsertDate")] Nz Nz)
    {
        if (id != Nz.TxtId)
        {
            return NotFound();
        }

        if (ModelState.IsValid)
        {
            try
            {
                var Edited = new Nz()
                {
                    TxtId = Nz.TxtId,
                    BirthDate = Nz.BirthDate,
                    InsertDate = Nz.InsertDate,
                    InsertUser = Nz.InsertUser,
                    FullName = Nz.FullName,
                    SexCode = Nz.SexCode,
                    Mkh = Nz.Mkh.Where(m => m.TxtId == Nz.TxtId).ToList(),
                };
                _context.Update(Edited);
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!NzExists(Nz.TxtId))
                {
                    return NotFound();
                }
                else
                {
                    throw;
                }
            }
            return RedirectToAction(nameof(Index));
        }
        ViewData["SexCode"] = new SelectList(_context.Sex, "SexCode", "SexName", Nz.SexCode);
        return View(Nz);
    }
@model IEnumerable<Mkh>

<h4>MkhTbl</h4>
<hr />
    <table class="table">
        <thead>
            <tr>
                <th>
                    Date
                </th>
                <th>
                    Days
                </th>
                <th>
                    Notes
                </th>
                <th>
                    Mkh Type
                </th>
                <th></th>
            </tr>
        </thead>
        <tbody>
            @foreach (var item in Model)
            {

                <tr>
                    <td> 
                        @Html.EditorFor(modelItem => item.MkhDate)
                    </td>
                    <td>
                        @Html.EditorFor(modelItem => item.Days)
                    </td>
                    <td>
                        @Html.EditorFor(modelItem => item.Notes)
                    </td>
                    <td>
                        @Html.EditorFor(modelItem => item.MkhCodeNavigation.MkhName)
                    </td>
                </tr>
            }
        </tbody>
    </table>

    @section Scripts {
        @{await Html.RenderPartialAsync("_ValidationScriptsPartial");}
    } 
@model NozCoreWebApp5.Models.Nz
@*@{
        ViewData["Title"] = "Edit";
    }*@

<form asp-action="Edit">
    <div asp-validation-summary="ModelOnly" class="text-danger"></div>
    <input type="hidden" asp-for="TxtId" />
    <input type="hidden" asp-for="InsertDate" />
    <input type="hidden" asp-for="InsertUser" />

    <hr />


    <div class="row">
        <div class="col-md-3">
            <label asp-for="FullName" class="control-label">Full Name</label>
            <input asp-for="FullName" class="form-control" readonly/>
            <span asp-validation-for="FullName" class="text-danger"></span>
        </div>
        <div class="col-md-3">
            <label asp-for="BirthDate" class="control-label">Birth Date</label>
            <input asp-for="BirthDate" class="form-control" readonly/>
            <span asp-validation-for="BirthDate" class="text-danger"></span>
        </div>
        <div class="col-md-3">
            <label asp-for="SexCode" class="control-label">Sex</label>
            <select asp-for="SexCode" class="form-control" asp-items="ViewBag.SexCode"></select>
            <span asp-validation-for="SexCode" class="text-danger"></span>
        </div>
    </div>

    <br />
    <div class="form-group">
        <input type="submit" value="Save" class="btn btn-default" />
    </div>
</form>
<div>
    <a asp-action="Index">Nz List</a>
</div>

@{ await Html.RenderPartialAsync("~/Views/Mkhalfa/EditNz.cshtml", Model.Mkh); }

@section Scripts {
    @{await Html.RenderPartialAsync("_ValidationScriptsPartial");}
}
public async Task<IActionResult> Edit(decimal id, [Bind("TxtId,Sn,FullName,BirthDate,SexCode,InsertUser,InsertDate")] Nz Nz)
public async Task<IActionResult> Edit(decimal id, [Bind("TxtId,Sn,FullName,BirthDate,SexCode,Mkh,InsertUser,InsertDate")] Nz Nz)