如何将ICollection值存储到MVC5中的数据库中?

契据

我有一个业务模型,该模型仅继承自ApplicationUser,在其中有一个定义如下的字段:

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>

而且,根据先前选择的类别,我将通过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);
    }

    ...
}

我还如何获取已检查的子类别,然后将它们作为集合存储在数据库中?

贾斯汀·斯基尔斯

您可以执行以下操作:

foreach(var subcategory in model.Subcategories)
{
    db.Entry(subcategory).State = EntityState.Unchanged;
    user.Subcategories.Add(subcategory);
}

哪里db是你的ApplicationDbContext基本上,这会遍历模型中的所有子类别,在实体状态方面将它们标记为未更改(因此框架不会尝试将它们作为新的添加到数据库中),然后将子类别添加到用户的集合中。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何将表单中的值存储到mySQL数据库中?

如何将MySQL数据库中的值存储到变量中?

如何将数据库中的值存储到集合中?

如何将编码值存储到数据库中

如何将javascript的值传递到PHP变量中并存储到mysql数据库中?

如何将静态类中的数据存储到ASP中的数据库。网?并修改静态类的值?

如何将数据库查询结果中的值存储到机器人框架中的变量中

如何将 MySQL 数据库中的数据存储到由 id 索引的数组中?

如何将动态表中的数据存储到数据库中

如何将Map <String,LinkedList <Object >>数据存储到数据库表中?

如何将div标记内的数据存储到数据库中?

如何将输入的数据存储到远程数据库中?

如何将H2数据库文件存储到项目目录中

Laravel如何将数组存储到数据库中

如何将Hibernate Envers审核表存储到其他数据库中?

如何将PropertyBag类存储到数据库中

如何将数据库中存储的多边形绘制到Google地图上

我应该如何将HTML标签存储到数据库中?

如何将数据库记录存储到Rails的哈希红宝石中

Marklogic如何将XQuery文件存储到Modules数据库中

Laravel如何将变量存储到数据库中并在每次单击时更新

如何将选定的头像存储到数据库中

单击创建按钮时,如何将当前时间存储到数据库中?

如何将c#imagesource存储到数据库中?

如何将 post api 响应存储到 sqlite 数据库中?

如何将图像存储在数据库中

如何将HashMap存储在值为Arrays的数据库中?

如何将 jQuery 范围滑块值转换为表单以存储在 Django 的数据库中

如何将列出的值从数据库存储到Anylogic 8.7.1中的变量?