[英]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 ? 有人有什么主意我该如何解决/解决我的问题吗?
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,则将数据添加到RegisteredAddress
和AddressCorrespondence
否则仅将数据添加到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 如果要在其他视图中分配数据
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"); }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.