簡體   English   中英

如何將用戶復選框檢查寫入數據庫中的多條記錄 - 使用 MVC、C#、Razor、nHibernate

[英]How to write Users checkbox checks into multiple records in database - using MVC, C#, Razor, nHibernate

所以我試圖將用戶選中的復選框中的值插入到我的數據庫中。

在我的視圖模型中:

    [Display(Name = "Title")]
    public string Title { get; set; }
    public IEnumerable<SelectListItem> UserTitlelist { get; set; }
    public IEnumerable<SelectListItem> Titles { get; set; }

在我看來:

 @foreach (var item in Model.Titles)
  {
    <label class="managelabel" style="padding: 0 5px 0 5px;"><input name="Title" type="checkbox" value="@item.Value" @checkedcheckbox> @item.Text</label>
  }

在我的控制器中:

 var titleToInsert = new UserTitle
  {
   UserId = currentUserId,
   TitleId = model.Title[];
   };
  UserManagerService.UpdateUserTitles(titleToInsert);

在 UserManagerService 中:

public static int UpdateUserTitles(UserTitle userTitle)
    {

        using (ITransaction transaction = Context.BeginTransaction())
        {
            foreach (var x in userTitle)
            {
                Context.Save(userTitle);
            }
            transaction.Commit();
        }
        return 0;
    }

您的視圖模型不正確,與您正在編輯的內容完全沒有關系。 SelectListItem是用於@Html.DropDownListFor() ,而不是用於復選框的集合。

您查看模型應該是

public class TitleVM
{
  public int ID { get; set; }
  public string Name { get; set; }
  public bool IsSelected { get; set; }
}

public class UserTitleVM
{
  .... // other properties
  public List<TitleVM> Titles { get; set; }
}

並且在視圖中

@model UserTitleVM
@using (Html.BeginForm())
{
  ....
  for(int i = 0; i < Model.Titles.Count; i++)
  {
    @Html.HiddenFor(m => m.Titles[i].ID)
    @Html.CheckBoxFor(m =>m.Titles[i].IsSelected)
    @Html.LabelFor(m => m.Titles[i].IsSelected, Model.Titles[i].Name)
  }

並在控制器中

public ActionResult Edit(UserTitleVM model)
{
  // Get the ID's of the selected titles
  List<int> selectedTitles = model.Titles.Where(t => t.IsSelected).Select(t => t.ID);
  ....

我發現答案很簡單:

在控制器中:

var myList = Request.Form["Title"];
            foreach (var item in myList.Split(','))
            {
                var titleToInsert = new UserTitle
                {
                    UserId = currentUserId,
                    TitleId = Convert.ToInt32(item)
                };
                UserManagerService.UpdateUserTitles(titleToInsert);                
            }

然后在 UserManagerService 中:

public static int UpdateUserTitles(UserTitle userTitle)
    {

        using (ITransaction transaction = Context.BeginTransaction())
        {
            Context.Save(userTitle);
            transaction.Commit();
        }
        return 0;
    }

這樣每條記錄都會單獨保存

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM