简体   繁体   English

ASP.NET MVC复选框+插入数据

[英]asp.net mvc checkbox + insert data

I have a question. 我有个问题。 I have a 3 models (Person, RegisteredAddress and AddressCorrespondence) The RegisterAddress and AddressCorrespondence are exactly the same table (with the same names of columns). 我有3个模型(Person,RegisteredAddress和AddressCorrespondence)。RegisterAddress和AddressCorrespondence是完全相同的表(具有相同的列名)。 The Person model is : 人员模型为:

    public int ID { get; set; }
    public string FirstName { get; set; }
    public string LastName{ get; set; }
    public DateTime BirthDate{ get; set; }
    public bool TheSameAddress{ get; set; }

The model of Addresses 地址模型

    public int Id { get; set; }
    public string Street{ get; set; }
    public int Number{ get; set; }
    public string Code{ get; set; }
    public string State{ get; set; }
    public string City{ get; set; }
    public int Person_Id { get; set; }

And then I have a 3 views. 然后,我有3个意见。 Evry view are a form to fill which respons evry model. Evry视图是一种响应Evry模型的表格。 In first view we can mark the checkBox value of "TheSameAddress" property. 在第一个视图中,我们可以标记“ TheSameAddress”属性的checkBox值。 What I want to do is: When the user mark this checkbox then i'd like to open only a view with a RegisteredAddress but i'd like to save the same data into AddressCorrespondence table. 我想做的是:当用户选中此复选框时,我只想打开一个带有RegisteredAddress的视图,但是我想将相同的数据保存到AddressCorrespondence表中。 It's mean that when the checkbox is marked then should be only shown a 2nd form (after 1st) but the 3rd view/form couln't be display but in the database the date should be save. 这意味着,当选中该复选框时,仅应显示第二个表单(在第一个表单之后),但不会显示第三个视图/表单,但应在数据库中保存日期。 Does anybody havy any idea how can i make it/solve my problem ? 有人有什么主意我该如何解决/解决我的问题吗?

Option 1 选项1

if I understood you can do it like : 如果我了解您可以这样做:

in the view : Person Register View form design is as you want, you can hide or show the third form if the checkbox is enabled or not 在视图中:“ 人事登记”视图表单设计随心所欲,如果复选框处于启用状态,则可以隐藏或显示第三个表单

 @model WebApplication2.Models.Person @{ ViewBag.Title = "Register Person"; } @using (Html.BeginForm()) { <div class="col-lg-12"><br /></div> <label>FirstName</label> @Html.TextBoxFor(m=>m.FirstName) <div class="col-lg-12"><br /></div> <label>LastName</label> @Html.TextBoxFor(m => m.LastName ) <div class="col-lg-12"><br /></div> <label>The Same Address?</label> @Html.CheckBoxFor(m=>m.TheSameAddress) <div class="col-lg-12"><br /></div> <label>City</label> <input type="text" name="City"id="City" /> <div class="col-lg-12"><br /></div> <label>Code</label> <input type="text" name="Code" id="Code" /> <div class="col-lg-12"><br /></div> <label>Number</label> <input type="number" name="Number" id="Number" /> <div class="col-lg-12"><br /></div> <input type="submit" value="Save" /> } 

Controller 控制者

compare if the checkbox is true adds the data to RegisteredAddress and AddressCorrespondence else just add data to RegisteredAddress 比较如果checkbox为true,则将数据添加到RegisteredAddressAddressCorrespondence否则仅将数据添加到RegisteredAddress

  public ActionResult CreatePeople() { return View(); } [HttpPost] public ActionResult CreatePeople(Person person,string city,string code , int number) { if (person.TheSameAddress == true ) { var newperson = new Person { FirstName = person.FirstName, LastName = person.LastName, BirthDate= DateTime.Now, TheSameAddress=person.TheSameAddress }; db.person.Add(newperson); db.SaveChanges(); var newRegisterAdress = new RegisteredAddress { City = city, Code = code, Number = number, Person = newperson }; db.RegisteredAddress.Add(newRegisterAdress); db.SaveChanges(); var newAdressCorrsp = new AddressCorrespondence { City = city, Code = code, Number = number, Person = newperson }; db.AddressCorrespondence.Add(newAdressCorrsp); db.SaveChanges(); } else { var newperson = new Person { FirstName = person.FirstName, LastName = person.LastName, BirthDate = DateTime.Now, TheSameAddress=person.TheSameAddress }; db.person.Add(newperson); var newRegisterAdress = new RegisteredAddress { City = city, Code = code, Number = number, Person = newperson }; db.RegisteredAddress.Add(newRegisterAdress); db.SaveChanges(); } return View(); } 

it is an idea of how you can do can be adapted to the three views if you want 这是一个想法,您可以根据需要对三种视图进行调整

if you want to asign the data in other view 如果要在其他视图中分配数据

Option 2 选项2

register the person first and asign the adress from index view , Index =People 首先从索引视图注册人并分配地址,索引=人

like: IndexView 像:IndexView

 @model IEnumerable<WebApplication2.Models.Person> @{ ViewBag.Title = "People"; } <table class="table"> <tr> <th> <label>Name</label> </th> <th> <label>LastName</label> </th> <th> <label>BirthDate</label> </th> </tr> @foreach (var item in Model) { <tr> <td> @Html.DisplayFor(modelItem => item.FirstName ) </td> <td> @Html.DisplayFor(modelItem => item.LastName ) </td> <td> @Html.DisplayFor(modelItem => item.BirthDate) </td> <td> @Html.ActionLink("Add Adress", "CreateAdress", new { Id_Person = item.ID }, htmlAttributes: new { @class = "btn btn-primary btn-xs" }) </td> </tr> } </table> 

Controller 控制者

  public ActionResult CreateAdress(int Id_Person ) { ViewBag.PersonId = Id_Person; return View(); } [HttpPost] public ActionResult CreateAdress(RegisteredAddress ra ,int Id_Person) { var personf = db.person.Find(Id_Person); if (personf.TheSameAddress == true) { var newRegisterAdress = new RegisteredAddress { City = ra.City , Code = ra.Code, Number = ra.Number, Person = personf }; db.RegisteredAddress.Add(newRegisterAdress); db.SaveChanges(); var newAdressCorrsp = new AddressCorrespondence { City = ra.City, Code = ra.Code, Number = ra.Number, Person = personf }; db.AddressCorrespondence.Add(newAdressCorrsp); db.SaveChanges(); } else { var newRegisterAdress = new RegisteredAddress { City = ra.City, Code = ra.Code, Number = ra.Number, Person = personf }; db.RegisteredAddress.Add(newRegisterAdress); db.SaveChanges(); } return RedirectToAction("People"); } 

I leave a link with the project here 我在这里留下与项目的链接

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM