Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.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
Asp.net mvc 在渲染部分MVC中传递下拉列表_Asp.net Mvc_Asp.net Mvc 4_Drop Down Menu_Modal Dialog - Fatal编程技术网

Asp.net mvc 在渲染部分MVC中传递下拉列表

Asp.net mvc 在渲染部分MVC中传递下拉列表,asp.net-mvc,asp.net-mvc-4,drop-down-menu,modal-dialog,Asp.net Mvc,Asp.net Mvc 4,Drop Down Menu,Modal Dialog,我在想也许我是在试图实现不可能的事情。我在页面上有一个按钮,显示用于向另一个模型添加项目的partialview。这有一个dropdownlist,在进一步调查后返回null,因此抛出一个错误: System.InvalidOperationException: There is no ViewData item of type 'IEnumerable<SelectListItem>' that has the key 'ProjectId'. 应在模式弹出窗口中呈现的Rende

我在想也许我是在试图实现不可能的事情。我在页面上有一个按钮,显示用于向另一个模型添加项目的partialview。这有一个dropdownlist,在进一步调查后返回null,因此抛出一个错误:

System.InvalidOperationException: There is no ViewData item of type 'IEnumerable<SelectListItem>' that has the key 'ProjectId'.
应在模式弹出窗口中呈现的RenderPartial

@{Html.RenderPartial("_AddProjectDocument", new ProjectUno.Models.ProjectDocument());}
在_AddProjectDocument.cshtml中

<div class="editor-field">
        @Html.DropDownList("ProjectId", String.Empty)
        @Html.ValidationMessageFor(model => model.ProjectId)
    </div>

已使用FKs和虚拟属性建立模型。当我在/ProjectDocument/create处使用scafolded create视图时,下拉列表按预期填充。如果有任何帮助,我将不胜感激。

在这些情况下,我喜欢使用静态方法。在你的控制器上

int userId = (int)MySqlWebSecurity.CurrentUserId;
 ViewBag.ProjectId = new SelectList(db.ProjectDocuments.Where(a=>a.ProjectUserId=userId), "ProjectId", "ProjectTitle");
public static List<SelectListItem> GetDropDown(){
    List<SelectListItem> ls = new List<SelectListItem>();
    var data = //call the database;
    foreach(var temp in data){
        ls.Add(new SelectListItem() { Text = temp.Text, Value = temp.Value });
    }
    return ls
}

谢谢@Mohammadb Batineh TempData是我唯一的选择吗?我读到使用tempdata不好,所以你的下拉列表没有创建?在哪里使用ViewData?我没有使用ViewData,我使用的是ViewBag,但错误有点欺骗性。我认为,当编译器没有为ViewBag找到任何内容时,它默认为ViewData。从研究中可以看出,这是因为下拉列表的viewbag为null或为空。请检查本文“是”。它是指向控制器的路径。projectname.controllername.getdropdown类似的内容
@Html.DropDownList("ProjectId", PathToController.GetDropDown())