![](/img/trans.png)
[英]ASP.net MVC/EF/C# add none related table records to query in controller
[英]C# MVC add records to related table from one view
我的C#知识背景为0。我正在尝试学习它。 我只是不确定如何使用正确的单词进行搜索。 所以我在呼救!
我有一个使用MVC框架的小型ASP.Net Web应用程序。 我有一个数据库,其中包含三个表Company , Territory ,第三个是关系表TerritoryCompany 。 因此,基本设置是:一个Company
可以在多个Territory
设有分支机构,而一个Territory
可以拥有多个Company
。 这种关系是Many-Many
。
我所拥有的是一个CS代码,可以让您创建一家公司,没什么特别的,
public void Save(CompanyModel company)
{
using (var db = new SampleDbContext())
{
Company entity;
if (company.CompanyId > 0)
{
entity = db.Companies.First(x => x.Id == company.CompanyId);
}
else
{
entity = new Company();
db.Companies.Add(entity);
}
entity.Name = company.CompanyName;
entity.PhoneNo = company.PhoneNo;
//What should I do?
db.SaveChanges();
}
}
现在如您所见,我可以添加公司名称和电话号码。 好。 这是我在网页中使用的代码,
@model PEF.SampleTesting.Domain.CompanyModel
@{
ViewBag.Title = "Add";
}
@using (Html.BeginForm("Save", "Companies"))
{
@Html.EditorForModel()
<label>Enter the list of service area</label><br />
<input id="ServiceArea" class="form-control" name="testBox" value="eg. BS1, BA5" /><br/>
<button type="Submit" class="btn btn-primary">Save</button>
}
这是CompaniesController
[HttpPost]
public ActionResult Save(CompanyModel model)
{
if (!ModelState.IsValid) return View((model.CompanyId == 0)?"Add":"Edit", model);
_companyService.Save(model);
return RedirectToAction("Index");
}
我想做的是,在进行保存更改之前,先执行db.SaveChanges();
创建公司时,我想
Territory
添加这些条目-如果“领土”表中不存在该Territory
我创建了一个TextBox
,它将获得用逗号分隔的区域条目。 在For中使用此TextBox值,并为表Territory
创建尽可能多的实体(可能使用for
循环和拆分功能)。
我的问题;
TerritoryCompany
表中? 任何帮助或步骤将不胜感激。
通常,不用将数据实体传递给视图,而是创建一个视图模型,这将为您提供更大的灵活性。
类似于此类“ AddCompanyViewModel”,它为您的公司提供一个属性,并为您的逗号分隔的领土字符串提供一个属性...
现在,您也将通过控制器而不是实体类型传递此viewmodel ...这是一种常见情况,因为您的数据库结构很少会与您的域层(业务层)完全匹配...视图模型实质上是对视图进行建模。
public class AddCompanyViewModel
{
public CompanyModel Company { get; set; }
public string Territories { get; set; }
}
[HttpPost]
public ActionResult Save(AddCompanyViewModel model)
{
if (!ModelState.IsValid)
return View((model.Company.CompanyId == 0)?"Add":"Edit", model);
_companyService.Save(model.Company);
// Do something with territories...
var territories = model.Territories.Split(',');
return RedirectToAction("Index");
}
您可以将FormCollection参数用于操作。
公共ActionResult保存(CompanyModel模型,FormCollection formCol)
通过name属性引用文本框。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.