gpt4 book ai didi

c# - 多选列表框asp mvc

转载 作者:行者123 更新时间:2023-11-30 17:58:38 26 4
gpt4 key购买 nike

我正在开发一个 mvc .net 网络应用程序,并且我正在使用 Entity Framework 。在我的模型中,我有一个名为“utisateur”(用户)的实体,每个用户都有一个或多个监督他的用户。我想要做的是生成一个包含所有用户列表的多选列表框,以便选择新用户的主管。

我尝试这样做但是我得到了这个错误:对象引用未设置到对象的实例。

这是我的模型类:

public class util 
{
public util()
{
user = new utilisateur();
listesups = Getutilisateurs(null);
}
public utilisateur user { get; set; }
public int[] selectedusers;
public MultiSelectList listesups { get; set; }
public MultiSelectList Getutilisateurs(int[] selectedValues)
{
var db = new BDGestionEntities();
List<utilisateur> utilisateurs = db.utilisateurs.ToList();
return new MultiSelectList(utilisateurs, "id", "login", selectedValues);
}
}

这是包含列表框的 View 部分:

 @Html.ListBoxFor(model => model.selectedusers, Model.listesups)

这是 Controller

    public ActionResult Create2()
{
return View();
}

[HttpPost]
public ActionResult Create2(util model)
{
utilisateur u = new utilisateur();
if (model.selectedusers != null)
{
foreach (var selecteduse in model.selectedusers)
{
int selecteduseId = selecteduse;
utilisateur utilisateur = db.utilisateurs.Where(c => c.id == selecteduseId).FirstOrDefault();
u.superieur.Add(utilisateur);
}


}
u.nom = model.user.nom;
u.prenom = model.user.prenom;
u.solde_conge = model.user.solde_conge;
u.email = model.user.email;
u.login = model.user.login;
u.pwd = model.user.pwd;
role role = new role();
//role.nom_role = model.nom_role;

role = db.roles.Where(c => c.nom_role == model.nom_role).FirstOrDefault();
u.role = role;
db.utilisateurs.AddObject(u);
db.SaveChanges();
ViewBag.id_role = new SelectList(db.roles, "id", "nom_role", model.user.id_role);
return RedirectToAction("index");

}

这是错误信息

Server Error in '/' Application.
Object reference not set to an instance of an object.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.NullReferenceException: Object reference not set to an instance of an object.

Source Error:
Line 44: <tr><td><label><b>Role : </b></label></td><td>@Html.DropDownListFor(model => model.nom_role, values)</td></tr>
Line 45: <tr>
Line 46: <td><label><b>Liste des supérieurs : </b></label></td><td>@Html.ListBoxFor(model => model.selectedusers, Model.listesups)</td></tr>
Line 47: </table>
Line 48: <p>

最佳答案

我通过像这样编辑 Create2() 方法解决了这个问题:

public ActionResult Create2()
{
string login = User.Identity.Name;
utilisateur ut = new utilisateur();
var q = from j in db.utilisateurs where j.login == login select j;
foreach (var i in q)
ut = i;
if ((ut.role.nom_role == "Stagiaire") || (ut.role.nom_role == "Developpeur"))
return Redirect("~/Erreur");
util u = new util();
u.listesups = new MultiSelectList (db.utilisateurs, "id", "login");
return View(u);
}

[HttpPost]
public ActionResult Create2(FormCollection collection, util model)
{


var sups = collection["selectedusers"];
string login = User.Identity.Name;
utilisateur u = new utilisateur();
List<int> nums = new List<int>();
var q = from j in db.utilisateurs where j.login == login select j;
utilisateur courant = new utilisateur();
try
{
foreach (var i in q)
{
courant = i;
}
foreach (var s in sups.Split(','))
{
nums.Add(int.Parse(s));
}
}
catch(Exception ex)
{
Logger.Warning(ex.Message, "aucun superieur selectionné");
}
try
{
foreach (var selecteduse in nums)
{
utilisateur utilisateur = db.utilisateurs.Where(c => c.id == (int)selecteduse).FirstOrDefault();
u.superieur.Add(utilisateur);
}
}
catch(Exception ex)
{
Logger.Error(ex.Message, "Erreur ajout supérieurs");
}
//}
if ((model.user.nom != null) && (model.user.prenom != null) && (model.user.login != null) && (model.user.email != null))
{
u.nom = model.user.nom;
u.prenom = model.user.prenom;
u.solde_conge = model.user.solde_conge;
u.email = model.user.email;
u.login = model.user.login;
u.pwd = model.user.pwd;
role role = new role();
role = db.roles.Where(c => c.nom_role == model.nom_role).FirstOrDefault();
u.role = role;
try
{
db.utilisateurs.AddObject(u);
db.SaveChanges();
}
catch (Exception ex)
{
Logger.Error(ex.Message, "");
}

ViewBag.id_role = new SelectList(db.roles, "id", "nom_role", model.user.id_role);
return RedirectToAction("index");
}

关于c# - 多选列表框asp mvc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12093508/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com