Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/328.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# I';我很难让Razor语句呈现一个;UserOnProjectInRole“;在我看来,在MVC中_C#_Asp.net Mvc_Model View Controller_Razor - Fatal编程技术网

C# I';我很难让Razor语句呈现一个;UserOnProjectInRole“;在我看来,在MVC中

C# I';我很难让Razor语句呈现一个;UserOnProjectInRole“;在我看来,在MVC中,c#,asp.net-mvc,model-view-controller,razor,C#,Asp.net Mvc,Model View Controller,Razor,我在获取视图推断的方法时遇到困难,无法将指定的用户呈现给“项目”;问题是我在不同的模型/视图/控制器机制中有一个相同的方法,它在做完全相同的事情,不同的用户扮演不同的角色;很好。我为每个人都有一个助手/控制器,模型到控制器,然后到视图是相同的,但一个不工作;我只有两个月的编码经验,所以这可能是我眼睛看不到的简单东西。我已经检查了DB,AddUsersTo方法正在工作,因为用户被分配到正确的表中;但不管出于什么原因,它们都不会呈现在视图中 以下是帮助器中的方法 public string List

我在获取视图推断的方法时遇到困难,无法将指定的用户呈现给“项目”;问题是我在不同的模型/视图/控制器机制中有一个相同的方法,它在做完全相同的事情,不同的用户扮演不同的角色;很好。我为每个人都有一个助手/控制器,模型到控制器,然后到视图是相同的,但一个不工作;我只有两个月的编码经验,所以这可能是我眼睛看不到的简单东西。我已经检查了DB,AddUsersTo方法正在工作,因为用户被分配到正确的表中;但不管出于什么原因,它们都不会呈现在视图中

以下是帮助器中的方法

public string ListUsersOnProjectInRole(int projectId, string roleName)
{
    Projects projects = db.Projects.Find(projectId);
    switch (roleName)
    {

        case "Project Manager":
            if (projects.AssignedToUser == null)
            {
                return "Not Assigned";
            }
            return projects.AssignedToUser.DisplayName;

         default:
            return "Not Assigned";
    }
通过控制器/视图顶部的“projectHelper”全局实例化;这里是视图中表单的一个片段;问题是foreach循环


@Html.DisplayName(“项目经理:”)
@foreach(projectHelper.ListUsersOnProjectInRole(Model.Id,“项目经理”)中的var用户)
{
@使用者
}
@使用(Html.BeginForm(“AddUserOnProject”、“Projects”、FormMethod.Post))
{
if(User.IsInRole(“管理员”))
{
@Html.AntiForgeryToken()
@Html.HiddenFor(model=>model.Id)
提交
}

}
对于初学者来说,从视图连接到DB通常是错误的方法。填充模型的一切都应该发生在控制器中,完整的模型应该发送到只绑定到该数据的视图。(您真的不应该在视图中声明变量。)除此之外,这个失败的具体原因是什么?什么“不起作用”呢?在调试器中单步执行代码时,哪个特定操作首先生成意外结果?这很有意义;我不知道如何通过控制器推断“Listxyz on abc”方法;我想这些方法足够简单,只需在控制器中写入即可?(因为它们是从Db中提取的,所以应该是)也就是说,当我在“项目”详细信息视图上时,我有一个“项目经理”下拉列表和一个提交按钮,但不起作用的是foreach ie:在他们被指定为该项目的项目经理后列出。我的开发人员到票据的关系和方法结构相同,并且按照预期工作。“不起作用”并不是一个特别具体的问题描述。是时候使用调试器了。(如果您以前没有使用过调试器,那么现在是开始熟悉它的最佳时机。调试器是程序员最有用的工具。)在助手方法中放置一个断点。将向其发送哪些值?它们是您期望的吗?返回的是什么?它是您期望的吗?为什么?在这个实例中,调试没有提供任何值,因为没有任何操作处理任何空值;Db中的表显示正在分配它们;它们只是没有显示在列表中方法;我有一个switch语句,它生成默认的“Not Assigned”值,因此必须命中它(调试器也不会返回任何结果),这是否就意味着开关返回数据的方式有问题?