![](/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.