[英]How to enumerate the users chosen professional designation from relational database using linq lambda C# MVC razor in a foreach loop?
[英]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.