J'ai une vue où l'utilisateur doit sélectionner plusieurs éléments répertoriés par des cases à cocher, qui devraient ensuite être travaillées dans le contrôleur.
Cependant, je n'obtiens pas les valeurs transmises à la méthode POST du contrôleur; la liste est nulle lors du débogage.
Lors de la recherche de réponses, je n'ai pas pu trouver une correspondance avec C # et Html.CheckboxFor
pour plusieurs valeurs.
Je pense que ce n'est peut-être qu'une chose mineure à corriger, mais je ne peux pas le comprendre pendant plusieurs jours maintenant.
Voici mon modèle:
public class ShownListofTools// This List is given to the View to contain all Tools
{
public IEnumerable<CheckboxItem> ToolsInShownList { get; set; } = new List<CheckboxItem>();
}
public class CheckboxItem //This Model is used to bring the Tools to the View
{
public int ShownToolID { get; set; }
public bool IsChecked { get; set; }
public string DisplayName { get; set; }
public int RemainingWorkTime { get; set; }
}
Voici le contrôleur:
[HttpGet]
public ActionResult IndexforLend()
{
// 1)
var notwornouttools = db.Tools.Where(t => t.Max_Worktime - t.CurrentWorktime > 0); // List Tools that are not worn out yet
var tools = notwornouttools.Where(t => t.UserID == null); //refine Filter to all tools that are currently not lent by other users
// 2)
List<CheckboxItem> SelectListTools = new List<CheckboxItem>(); //temporary list, to gather all needed items
// 3)
foreach(var item in tools)//work down the "tool" list from above
{
SelectListTools.Add(
new CheckboxItem()//Add a new Checkbox Item
{
DisplayName = item.Tooltype + " " + item.Diameter+"mm", //Transfer the Attributes from the "tool" list
ShownToolID = item.ID,
IsChecked = false,
RemainingWorkTime = item.Max_Worktime - item.CurrentWorktime,
}
);
}
//Checkboxlist.ToolsInShownList = SelectListTools; //The Checkbox Items are Added to the List "Checkboxlist".
return View(SelectListTools); // The List "Checkboxlist" is transferred to the View.
}
//POST: Add Tools to a User
[HttpPost]
public ActionResult IndexforLend([Bind(Include = "IsChecked,ShownToolID")] List<CheckboxItem> chklist) //import from View, but make it numerable
{
foreach(var item in chklist) //go through the entire Checkboxlist
{
if (item.IsChecked == true) // if the Checkbox was Checked - not sure if only checked objects are returned
{
var id = item.ShownToolID; // take the Tool-ID to the variable "id"
foreach(var realtool in db.Tools) //go through all Tools in Database
{
if (realtool.ID == id) // if the Id from the Checkbox is found
{
realtool.UserID = LoggedInUser.ID; // set the Foreign Key UserID to the ID of the Logged in User
db.Entry(realtool).State = EntityState.Modified;
db.SaveChanges();
}
}
};
}
return RedirectToAction("Index");
}
La vue:
@model List<WZ_Web2.Models.CheckboxItem>
<p></p>
<p></p>
<div>Please select the Tools you want to lend:</div>
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
<table class="table">
@**@
<tr>
<th>
Select
</th>
<th>
Tool Name
</th>
<th>
Remaining Work Time
</th>
</tr>
@foreach (var item in Model)
{
<tr>
<td>
@Html.CheckBoxFor(modelItem => item.IsChecked)
@Html.HiddenFor(modelItem => item.ShownToolID)
</td>
<td>
@Html.DisplayFor(modelItem => item.DisplayName)
</td>
<td>
@Html.DisplayFor(modelItem => item.RemainingWorkTime)
</td>
</tr>
}
</table>
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="submit" class="btn btn-default" />
</div>
}
De foreach
cette façon, il ne génère pas de liste de noms indexés dans la publication. Au fur et à mesure que vous itérez item
et que vous définissez modelItem
, cela génère quelque chose comme ceci dans l'article:
item.IsChecked = true & item.ShownToolID = 1 & item.IsChecked = false & item.ShownToolID = 2 ...
Mais le contrôleur attend une liste indexée, par exemple:
[0] .IsChecked = true & [0] .ShownToolID = 1 & [1] .IsChecked = false & [1] .ShownToolID = 2 ...
En conséquence, mapper ne peut pas lier les données de votre publication. J'ai compris en inspectant le poste. Essayez d'utiliser à la for
place ...
À votre avis:
@for (int i = 0; i < Model.Count; i++ )
{
<tr>
<td>
@Html.CheckBoxFor(item => Model[i].IsChecked)
@Html.HiddenFor(item => Model[i].ShownToolID)
</td>
<td>
@Html.DisplayFor(item => Model[i].DisplayName)
</td>
<td>
@Html.DisplayFor(item => Model[i].RemainingWorkTime)
</td>
</tr>
}
Dans votre contrôleur:
[HttpPost]
public ActionResult IndexforLend(List<CheckboxItem> chklist)
Découvrez les traditions de Noël que Reba McEntire partage avec son fils, Shelby Blackstock, qui, selon elle, pourraient laisser certains confus.
Apprenez-en plus sur la façon dont Meghan Markle et Mariah Carey se sont liées sur leurs cheveux naturels dans un épisode du podcast "Archetypes" de Meghan.
Découvrez ce qu'une source a affirmé que le prince Harry espérait concernant les relations avec sa famille, en particulier le roi Charles et le prince William.
Un rapport de police accusant Brennon, star de "Love Is Blind", de violence domestique a récemment fait surface. Maintenant, Brennon a répondu aux réclamations.
Il y a le jeu d'acteur, puis il y a le doublage. Les deux sont difficiles à leur manière. Que savez-vous de ces légendes dans le domaine ?
Peut-être qu'aucun pays sur Terre n'aime Noël plus que les Philippines. Les résidents y célèbrent les vacances pendant quatre mois solides. Voici pourquoi.
Einstein a qualifié ce phénomène d'"action effrayante à distance" et les physiciens viennent de remporter le prix Nobel pour leurs travaux, mais qu'est-ce que l'intrication quantique ?
Air travel is far more than getting from point A to point B safely. How much do you know about the million little details that go into flying on airplanes?
Les traqueurs de tuiles font d'excellents cadeaux pour les amis qui sont toujours en retard parce qu'ils ne peuvent jamais trouver leurs clés (sérieusement, ils sont si ponctuels, tout le monde l'a toujours dit, ils ne pouvaient tout simplement pas trouver leurs clés hahaha!), Et les offres Tile Black Friday d'Amazon Cela signifie que c'est une évidence d'en acheter pour eux (ou pour vous-même). Vous avez trois choix ici: Pour mon argent, cela vaut la peine d'obtenir les Pros.
Lot de 12 couvercles extensibles en silicone Tomorrow's Kitchen | 14 $ | Amazone | Code promo 20OFFKINJALids sont essentiellement les chaussettes de la cuisine ; se perd toujours, laissant des conteneurs orphelins qui ne pourront plus jamais être refermés. Mais que se passerait-il si vos couvercles pouvaient s'étirer et s'adapter à tous vos restes de récipients, casseroles, poêles et même de gros fruits tranchés ? Vous n'aurez plus jamais à vous soucier de perdre ce couvercle très spécifique.
Nous avons piraté quelques villes industrielles dans cette colonne, comme Los Angeles et Las Vegas. Il est maintenant temps pour une ville complexe militaro-industrielle.
Un détaillant met en conserve sa section grande taille. Mais ils ne prennent pas la catégorie en ligne uniquement, ni ne l'abandonnent complètement.
L'équipe attend les médailles qu'elle a remportées aux Jeux olympiques d'hiver de 2022 à Pékin, alors qu'un cas de dopage impliquant la patineuse artistique russe Kamila Valieva est en cours de règlement.
Des milliers d'acheteurs Amazon recommandent la taie d'oreiller en soie Mulberry, et elle est en vente en ce moment. La taie d'oreiller en soie est disponible en plusieurs couleurs et aide à garder les cheveux doux et la peau claire. Achetez les taies d'oreiller en soie alors qu'elles sont jusqu'à 46% de réduction sur Amazon
Une plainte pour délit aggravé menaçant a été déposée jeudi contre Joe Mixon
Le département de police de Lafayette a commencé à enquêter sur un professeur de l'Université Purdue en décembre après avoir reçu plusieurs plaintes concernant un "homme suspect s'approchant de femmes".
Tout comme le monde qui nous entoure, la langue est en constante évolution. Alors que dans les époques précédentes, les changements de langue se produisaient sur des années, voire des décennies, cela peut maintenant se produire en quelques jours, voire quelques heures.
Je suis de retour pour la première fois en six ans. Je ne peux pas vous dire depuis combien de temps j'attends ça.
Cómo mejoramos la accesibilidad de nuestro componente de precio, y cómo nos marcó el camino hacia nuevos saberes para nuestro sistema de diseño. Por Ana Calderon y Laura Sarmiento Leer esta historia en inglés.
“And a river went out of Eden to water the garden, and from thence it was parted and became into four heads” Genesis 2:10. ? The heart is located in the middle of the thoracic cavity, pointing eastward.