Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 多选列表框asp mvc_C#_Asp.net_Asp.net Mvc_Asp.net Mvc 3_Entity Framework - Fatal编程技术网

C# 多选列表框asp mvc

C# 多选列表框asp mvc,c#,asp.net,asp.net-mvc,asp.net-mvc-3,entity-framework,C#,Asp.net,Asp.net Mvc,Asp.net Mvc 3,Entity Framework,我正在开发一个mvc.NETWeb应用程序,我正在使用实体框架。 在我的模型中,我有一个名为“utisateur”(用户)的实体,每个用户都有一个或多个用户来监督他。我想做的是生成一个包含所有用户列表的多选列表框,以便选择新用户的主管 我试着解决这个问题,但我得到了这个错误: 对象引用未设置为对象的实例 这是我的模型课: public class util { public util() { user = new utilisateur(); l

我正在开发一个mvc.NETWeb应用程序,我正在使用实体框架。 在我的模型中,我有一个名为“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);
    }
}
这是控制器

    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>
“/”应用程序中出现服务器错误。 对象引用未设置为对象的实例。 描述:执行当前web请求期间发生未处理的异常。请查看堆栈跟踪以了解有关错误的更多信息以及错误在代码中的起源。 异常详细信息:System.NullReferenceException:对象引用未设置为对象的实例。 源错误: 第44行:角色:@Html.DropDownListFor(model=>model.nom_角色,值) 第45行: 第46行:Liste des supérieurs:@Html.ListBoxFor(model=>model.selectedusers,model.listsups) 第47行: 第48行:
我通过如下编辑我的
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");
        }
public ActionResult Create2()
{
字符串login=User.Identity.Name;
提款人ut=新提款人();
var q=来自db.usilimateurs中的j,其中j.login==登录选择j;
foreach(q中的var i)
ut=i;
if((ut.role.nom_role==“Stagiaire”)| |(ut.role.nom_role==“Developpeur”))
返回重定向(“~/Erreur”);
util u=新的util();
u、 ListSups=新的多重选择列表(db.usilisaturs,“id”,“login”);
返回视图(u);
}
[HttpPost]
public ActionResult Create2(FormCollection集合,util模型)
{
var sups=集合[“selectedusers”];
字符串login=User.Identity.Name;
提款人u=新提款人();
List nums=新列表();
var q=来自db.usilimateurs中的j,其中j.login==登录选择j;
利用率系数=新的利用率系数();
尝试
{
foreach(q中的var i)
{
courant=i;
}
foreach(辅助拆分(',')中的变量s)
{
nums.Add(int.Parse(s));
}
}
捕获(例外情况除外)
{
记录器警告(例如消息“aucun superieur selectionné”);
}
尝试
{
foreach(变量选择以nums为单位)
{
Utisateur Utisateur=db.Utisateurs.Where(c=>c.id==(int)selecteduse).FirstOrDefault();
u、 上级添加(使用人);
}
}
捕获(例外情况除外)
{
记录器错误(例如消息“Erreur ajout supérieurs”);
}
//}
如果((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=db.roles.Where(c=>c.nom_role==model.nom_role).FirstOrDefault();
u、 角色=角色;
尝试
{
db.使用人添加对象(u);
db.SaveChanges();
}
捕获(例外情况除外)
{
Logger.错误(例如消息“”);
}
ViewBag.id\u role=新的选择列表(db.roles,“id”,“nom\u role”,model.user.id\u role);
返回操作(“索引”);
}

您可以发布显示视图的控制器操作吗?我编辑了帖子并添加了控制器,您可以发布错误,或者至少发布对象引用错误所抱怨的对象。如果您为
Create2
.done发布控制器
HttpGet
操作代码,也可能会有所帮助。希望有人能帮忙。我认为对象引用错误是由于
Model.listsups
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");
        }