0
我有一個商業模型,該模型簡單地從ApplicationUser繼承,並在其內部我已經定義像這樣的字段:如何將ICollection值存儲到MVC5中的數據庫中?
public class Business : ApplicationUser
{
...
public virtual ICollection<Subcategory> Subcategories { get; set; }
...
}
然後,我已經創建了這個特定的模型的圖模型,它也包括上述行,所以它有這個:
public class BusinessViewModel
{
...
public virtual ICollection<Subcategory> Subcategories { get; set; }
...
}
然後,在我看來,我有這樣的事情:
<div class="form-group">
@Html.LabelFor(model => model.Subcategories, "Subcategory", htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
<span id="subcats">
</span>
</div>
</div>
而且,我填充subcateg根據之前選擇的類別,通過AJAX呼叫進行通話。我的JS部分看起來是這樣的:
$("#CategoryID").change(function() {
$("#subcats").empty();
$.ajax({
type: 'POST',
url: '/Account/GetSubcategories',
dataType: 'json',
data: { id: $("#CategoryID").val() },
success: function (subcategories) {
$.each(subcategories, function (i, subcategory) {
$("#subcats").append('<input type="checkbox" name="' + subcategory.value + '" value="' + subcategory.id + '" />' + subcategory.value + '<br />');
});
},
error: function (ex) {
console.log('Failed to retrieve subcategories! ' + ex);
}
});
return false;
});
所以,問題是,當表單填寫,並在用戶點擊一個新的商業用戶的AspNetUsers內註冊的按鈕,它工作一切正常,當我有一個業務單一子類別字段,但現在我改變了我的邏輯,並接受了一個業務子類別的集合。我不知道如何將它存儲在數據庫中,我有類似的東西,但正如您可以注意到我不存儲子類別。我怎樣才能存儲子類別?
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public async Task<ActionResult> RegisterBusiness(BusinessViewModel model)
{
if (ModelState.IsValid)
{
var user = new Business { BusinessName = model.BusinessName, BusinessAddress = model.BusinessAddress, CategoryID = model.CategoryID,
BusinessZip = model.BusinessZip, BusinessPhone = model.BusinessPhone, BusinessDescription = model.BusinessDescription, Facebook = model.Facebook, Twitter = model.Twitter, UserName = model.BusinessName, Email = model.Email };
var result = await UserManager.CreateAsync(user, model.Password);
if (result.Succeeded)
{
...
}
AddErrors(result);
}
...
}
我怎樣才能得到被檢查的子類別,然後將它們作爲一個集合存儲在數據庫中?
我知道上面的代碼只檢查不添加新的子類別,但我如何將它們與業務同步?正如您在上面看到的,我創建了一個新的業務對象,並且只需將所有字段分配給來自該模型的字段,但是如何將該子類別分配給業務?因爲它是一個集合而不是單個對象?這是我的問題。 – tett 2014-09-05 21:57:18
你的代碼看起來很好。您只需循環子類別並將其添加到業務集合中,如上所示。 1)實例化業務類。 2)如我所示添加子類別。 3)使用'CreateAsync'創建業務。 – 2014-09-05 22:00:11
明白了,所以你的意思是我需要在我的'var user ...'和'var result ...'行之間插入你的代碼。對? – tett 2014-09-06 09:39:58