Model view controller DropdownList选定值未选定

Model view controller DropdownList选定值未选定,model-view-controller,Model View Controller,我有两个实体:部门和部门类型。 在部门索引视图中,我显示了部门列表,当单击按钮时,将打开一个模式并显示部门的详细信息 在此模式中,具有部门类型的部门将显示为dropdownlist。我无法使用我在控制器中设置的值选择此dropdownlist 这是代码,是我正在尝试做的一个示例代码。 型号: 公共课部 { public int DepartmentId{get;set;} 公共字符串名称{get;set;} 公共部门类型部门类型{get;set;} public SelectList DepTy

我有两个实体:部门和部门类型。 在部门索引视图中,我显示了部门列表,当单击按钮时,将打开一个模式并显示部门的详细信息

在此模式中,具有部门类型的部门将显示为dropdownlist。我无法使用我在控制器中设置的值选择此dropdownlist

这是代码,是我正在尝试做的一个示例代码。 型号:

公共课部
{
public int DepartmentId{get;set;}
公共字符串名称{get;set;}
公共部门类型部门类型{get;set;}
public SelectList DepTypeSelectList{get;set;}
}
公共类部门类型
{
公共int类型ID{get;set;}
公共字符串说明{get;set;}
}
公共类DepartmentDBContext:DbContext
{
公共数据库集部门{get;set;}
公共数据库集部门类型{get;set;}
}
控制器:

public ActionResult Index()
{
    var list = new List<Department>();
    list.Add(new Department{ DepartmentId = 1, Name = "Department 1", DepartmentType = new DepartmentType{ TypeId = 2, Description = "Type 2"}});
    var deptList = new List<DepartmentType>
    {
        new DepartmentType {TypeId = 1, Description = "Type Desc 1"},
        new DepartmentType {TypeId = 2, Description = "Type Desc 2"}
    };
    var selectList = new SelectList(deptList, "TypeId", "Description", 2);
    list[0].DepTypeSelectList = selectList;
    ViewBag.TypeId = new SelectList(deptList, "TypeId", "Description");
    return View(list);
}


    public ActionResult Index()
    {
        List items = new List();
        items.Add(new SelectListItem() { Text = "Type 1", Value = "1" });
        items.Add(new SelectListItem() { Text = "Type 2", Value = "2" });
        items.Add(new SelectListItem() { Text = "Type 3", Value = "3" });
        items.Add(new SelectListItem() { Text = "Type 4", Value = "4" });
        items.Add(new SelectListItem() { Text = "Type 5", Value = "5" });

        var list = new List
        {
            new Department
            {
                DepartmentId = 1,
                Name = "Department 1",
                DepartmentTypeId = 2,
                DepartmentType = new DepartmentType {TypeId = 2, Description = "Type 2"},
                SlectedValue = "2",
                DepTypeSelectList = items
            },
            new Department
            {
                DepartmentId = 2,
                Name = "Department 2",
                DepartmentTypeId = 1,
                DepartmentType = new DepartmentType {TypeId = 1, Description = "Type 1"},
                SlectedValue = "1",
                DepTypeSelectList = items
            },
            new Department
            {
                DepartmentId = 3,
                Name = "Department 3",
                DepartmentTypeId = 2,
                DepartmentType = new DepartmentType {TypeId = 2, Description = "Type 2"},
                SlectedValue = "2",
                DepTypeSelectList = items
            }
        };

        return View(list);
    }

public ActionResult Index()
{
var list=新列表();
添加(新部门{DepartmentId=1,Name=“Department 1”,DepartmentType=newdepartmenttype{TypeId=2,Description=“Type 2”});
var deptList=新列表
{
新部门类型{TypeId=1,Description=“Type Desc 1”},
新部门类型{TypeId=2,Description=“Type Desc 2”}
};
var selectList=新的selectList(部门列表,“类型ID”,“说明”,2);
列表[0]。DepTypeSelectList=selectList;
ViewBag.TypeId=新的选择列表(部门列表,“类型ID”、“说明”);
返回视图(列表);
}
部门的索引视图:

@model IEnumerable<ValidationTest.Models.Department>

@{
    ViewBag.Title = "Index";
}

<h2>Index</h2>

<p>
    @Html.ActionLink("Create New", "Create")
</p>
<table class="table">
    <tr>
        <th>
            @Html.DisplayNameFor(model => model.Name)
        </th>
        <th></th>
    </tr>

    @foreach (var item in Model)
    {
        <tr>
            <td>
                @Html.DisplayFor(modelItem => item.Name)
            </td>
            <td>
                @{
                    var divName = "#myModal" + item.DepartmentType.TypeId;
                }
                <button type="button" class="btn btn-info btn-lg" data-toggle="modal" data-target="@divName">Open Modal</button>
                @Html.Partial("_DepartmentType", item)

            </td>
        </tr>
    }

</table>
@model IEnumerable
@{
ViewBag.Title=“Index”;
}
指数

@ActionLink(“新建”、“创建”)

@DisplayNameFor(model=>model.Name) @foreach(模型中的var项目) { @DisplayFor(modelItem=>item.Name) @{ var divName=“#myModal”+item.DepartmentType.TypeId; } 开放模态 @Html.Partial(“_DepartmentType”,item) }
局部视图部门类型:

@model ValidationTest.Models.Department

@{
    var divName = "myModal" + Model.DepartmentType.TypeId;
}

<!-- Modal -->
<div id="@divName" class="modal fade" role="dialog">
    <div class="modal-dialog">

        <!-- Modal content-->
        <div class="modal-content">
            <div class="modal-header">
                <button type="button" class="close" data-dismiss="modal">&times;</button>
                <h4 class="modal-title">Department Type</h4>
            </div>
            <div class="modal-body">
                <p>Type Id: @Model.DepartmentType.TypeId</p>
                <p>Description: @Model.DepartmentType.Description</p>
                <p>
                    @Html.DropDownList("TypeId", Model.DepTypeSelectList, "-- Select Type --", new { @class = "form-control input-sm" })
                </p>
            </div>
            <div class="modal-footer">
                <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
            </div>
        </div>

    </div>
</div>
@model ValidationTest.Models.Department
@{
var divName=“myModal”+Model.DepartmentType.TypeId;
}
&时代;
部门类型
类型Id:@Model.DepartmentType.TypeId

Description:@Model.DepartmentType.Description

@DropDownList(“TypeId”,Model.DepTypeSelectList,”--Select Type--”,new{@class=“form control input sm”})

接近
有什么帮助吗?
谢谢

我刚刚用以下代码解决了我的问题:

型号:



    public class Department
    {
        public int DepartmentId { get; set; }
        public string Name { get; set; }
        public int DepartmentTypeId { get; set; }
        public DepartmentType DepartmentType { get; set; }

        //Select list stuf
        public string SlectedValue { get; set; } //DropDownList selected values
        public List DepTypeSelectList { get; set; } // CountryList 
    }

控制器:

public ActionResult Index()
{
    var list = new List<Department>();
    list.Add(new Department{ DepartmentId = 1, Name = "Department 1", DepartmentType = new DepartmentType{ TypeId = 2, Description = "Type 2"}});
    var deptList = new List<DepartmentType>
    {
        new DepartmentType {TypeId = 1, Description = "Type Desc 1"},
        new DepartmentType {TypeId = 2, Description = "Type Desc 2"}
    };
    var selectList = new SelectList(deptList, "TypeId", "Description", 2);
    list[0].DepTypeSelectList = selectList;
    ViewBag.TypeId = new SelectList(deptList, "TypeId", "Description");
    return View(list);
}


    public ActionResult Index()
    {
        List items = new List();
        items.Add(new SelectListItem() { Text = "Type 1", Value = "1" });
        items.Add(new SelectListItem() { Text = "Type 2", Value = "2" });
        items.Add(new SelectListItem() { Text = "Type 3", Value = "3" });
        items.Add(new SelectListItem() { Text = "Type 4", Value = "4" });
        items.Add(new SelectListItem() { Text = "Type 5", Value = "5" });

        var list = new List
        {
            new Department
            {
                DepartmentId = 1,
                Name = "Department 1",
                DepartmentTypeId = 2,
                DepartmentType = new DepartmentType {TypeId = 2, Description = "Type 2"},
                SlectedValue = "2",
                DepTypeSelectList = items
            },
            new Department
            {
                DepartmentId = 2,
                Name = "Department 2",
                DepartmentTypeId = 1,
                DepartmentType = new DepartmentType {TypeId = 1, Description = "Type 1"},
                SlectedValue = "1",
                DepTypeSelectList = items
            },
            new Department
            {
                DepartmentId = 3,
                Name = "Department 3",
                DepartmentTypeId = 2,
                DepartmentType = new DepartmentType {TypeId = 2, Description = "Type 2"},
                SlectedValue = "2",
                DepTypeSelectList = items
            }
        };

        return View(list);
    }

视图:

@模型IEnumerable @ActionLink(“新建”、“创建”)

@DisplayNameFor(model=>model.Name) @foreach(模型中的var项目) { @DisplayFor(modelItem=>item.Name) @{ var divName=“#myModal”+item.DepartmentType.TypeId; } 开放模态 @Html.Partial(“_DepartmentType”,item) }
局部视图:

@模型验证test.Models.Department @{ var divName=“myModal”+Model.DepartmentType.TypeId; } × 部门类型 类型Id:@Model.DepartmentType.TypeId

Description:@Model.DepartmentType.Description

@Html.DropDownListFor(model=>model.SlectedValue,model.DepTypeSelectList,“请选择”,新建{id=“DepartmentTypeId”})

接近
现在一切正常。 我创建多个表单的原因是因为在索引中我有一个行列表(部门列表),当单击其中一个时,必须打开一个弹出窗口,并且您应该能够编辑所选部门

确实有很多种形式,但它们不会在它们之间崩溃,我不知道其他的方法来做到这一点。客户请求是索引中带有可编辑弹出窗口(modals)的列表


干杯

请用一个特定的问题更新您的帖子。这个问题是特定的,因为它说:为什么我不能选择dropdownlist。请检查控制器代码:var selectList=新selectList(部门列表,“类型ID”,“说明”,2);我正在传递一个包含选定项的选择列表,当我打开模型时,组合框未被选中。此外,我还发布了一个非常简单的代码,您不能使用
foreach
循环为集合生成表单控件。您也不能使用部分表单(您需要使用
编辑模板
),但为什么要创建多个表单?您只能回发一个表单?回发到的控制器方法签名是什么。您的dropdownlist绑定到一个名为
TypeId
的项目,该项目不存在(尽管您有一个名为
DepartmentType.TypeId
)。 @model ValidationTest.Models.Department @{ var divName = "myModal" + Model.DepartmentType.TypeId; } × Department Type Type Id: @Model.DepartmentType.TypeId

Description: @Model.DepartmentType.Description

@Html.DropDownListFor(model => model.SlectedValue, Model.DepTypeSelectList, "Please select", new { id = "DepartmentTypeId" })

Close