Model view controller DropdownList选定值未选定
我有两个实体:部门和部门类型。 在部门索引视图中,我显示了部门列表,当单击按钮时,将打开一个模式并显示部门的详细信息 在此模式中,具有部门类型的部门将显示为dropdownlist。我无法使用我在控制器中设置的值选择此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
公共课部
{
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">×</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