私は、クライアントのリストと各クライアントのチェックボックスをユーザに提示して、いくつかのボタンを選択してボタンをクリックする必要があるこのプロジェクトで練習しています。リストを操作するときに、CheckBoxForをforeach内で使用するにはどうすればよいですか?
私はリストを作成することができました。リスト内のすべての行に対して1つのチェックボックスが表示されます。
問題がある:
私は私のリストの各項目に関連する各チェックボックスを作成する方法がわからない...現在、彼らは全体のリストについては、単一のチェックボックスのように取り組んでいます。
私はC#の初心者です。多分私はここで何かばかげたことをしています。
また、リストを選択してチェックするためにリストを反復する方法はありますか?ここで
私のコードです:
私のViewModel:
public class TransferViewModel
{
public TransferViewModel()
{
Clients = new List<Client>();
}
public virtual ICollection<Client> Clients { get; set; }
[DisplayName("ID")]
public int? Id { get; set; }
[DisplayName("Transferir de")]
public string TransferFrom { get; set; }
[DisplayName("Transferir para")]
public string TransferTo { get; set; }
[DisplayName("Selecionado")]
public bool IsSelected { get; set; }
[DisplayName("Categoria do Cliente")]
public virtual ClientCategory Category { get; set; }
[DisplayName("Categoria do Cliente")]
public int? CategoryId { get; set; }
[DisplayName("Razão Social")]
public string OfficialName { get; set; }
[DisplayName("Nome Fantasia")]
public string DisplayName { get; set; }
[DisplayName("Responsável")]
public string AssignedToLogin { get; set; }
[DisplayName("Excluído")]
public bool IsDeleted { get; set; }
[DisplayName("Ultima atividade")]
public DateTime? LastInteractionOn { get; set; }
}
マイコントローラー:
[ViewBagListOfUsers]
// GET: ActivityTypes/Create
public ActionResult TransferSpecificClients(TransferViewModel model)
{
var selectedUserFrom = model.TransferFrom;
var selectedUserTo = model.TransferTo;
var query = db.Clients as IQueryable<Client>;
if (selectedUserFrom!=null)
{
model.Clients = query
.Where(p => p.AssignedToLogin == selectedUserFrom)
.ToArray();
}
if ((selectedUserTo != null)&&(selectedUserFrom != null))
{
//do something if the client is selected ...
}
return View(model);
そして、私のビュー:
@model EFGEREN.App.Models.ViewModels.Clients.TransferViewModel
@using EFGEREN.App.Models.Entities
@using System.Linq
@using System.Web.Mvc
@using Resources
@{
ViewBag.Title = "TransferSpecificClients";
IEnumerable<SelectListItem> usersListFrom = ViewBag.UserList;
IEnumerable<SelectListItem> usersListTo = ViewBag.UserList;
}
<h2>TransferSpecificClients</h2>
@using (Html.BeginForm())
{
@Html.DisplayNameFor(model => model.TransferFrom)
@Html.DropDownListFor(m => m.TransferFrom, usersListFrom, Expressions.DropDownListSelectOneX, new { @class = "form-control" })
<div class="controls well well-sm">
<button type="submit" value="Filtrar" class="btn btn-success"><i class="glyphicon glyphicon-ok"></i>@("Filtrar")</button>
</div>
<table class="table">
<tr>
<th>
@Html.DisplayNameFor(model => model.IsSelected)
</th>
<th>
@Html.DisplayNameFor(model => model.CategoryId)
</th>
<th>
@Html.DisplayNameFor(model => model.OfficialName)
</th>
<th>
@Html.DisplayNameFor(model => model.DisplayName)
</th>
<th>
@Html.DisplayNameFor(model => model.AssignedToLogin)
</th>
<th>
@Html.DisplayNameFor(model => model.LastInteractionOn)
</th>
<th></th>
</tr>
@foreach (var item in Model.Clients) {
<tr>
<td>
@Html.CheckBoxFor(m => m.IsSelected, new { @checked = "checked" })
</td>
<td>
@Html.DisplayFor(modelItem => item.CategoryId)
</td>
<td>
@Html.DisplayFor(modelItem => item.OfficialName)
</td>
<td>
@Html.DisplayFor(modelItem => item.DisplayName)
</td>
<td>
@Html.DisplayFor(modelItem => item.AssignedToLogin)
</td>
<td>
@Html.DisplayFor(modelItem => item.LastInteractionOn)
</td>
</tr>}
</table>
@Html.DisplayNameFor(model => model.TransferTo)
@Html.DropDownListFor(m => m.TransferTo, usersListTo, Expressions.DropDownListSelectOneX, new { @class = "form-control" })
<div class="controls well well-sm">
<button type="submit" value="Transferir" class="btn btn-success"><i class="glyphicon glyphicon-ok"></i>@("Transferir")</button>
</div>
}
'foreach'ループは使用できません(dupeを参照)。 'new {@checked =" checked "}"コードを削除してください。 'CheckBoxFor()'メソッドは、プロパティの値に基づいて選択されたものを判定します。 –