Forms MVC如何在不使用模型的情况下填充dropdownlist
我使用的是MVC4,我在视图中有一个表单没有绑定到模型,它使用的是标准的html元素 我想从列表值(即从控制器操作返回)填充dropdownlist 同样基于从第一个dropdownlist中选择的值,我想填充第二个dropdownlistForms MVC如何在不使用模型的情况下填充dropdownlist,forms,asp.net-mvc-4,model-view-controller,Forms,Asp.net Mvc 4,Model View Controller,我使用的是MVC4,我在视图中有一个表单没有绑定到模型,它使用的是标准的html元素 我想从列表值(即从控制器操作返回)填充dropdownlist 同样基于从第一个dropdownlist中选择的值,我想填充第二个dropdownlist 请有人引导您循环浏览第一个下拉列表的所有可用选项,并在其中添加标签。对于第二个下拉列表,您需要创建一组下拉列表并隐藏/显示它们,或者创建一个大列表并根据第一个列表的选择删除无效条目。您肯定需要为第二个列表编写javascript 如果不想使用应该使用的模型,
请有人引导您循环浏览第一个下拉列表的所有可用选项,并在其中添加标签。对于第二个下拉列表,您需要创建一组下拉列表并隐藏/显示它们,或者创建一个大列表并根据第一个列表的选择删除无效条目。您肯定需要为第二个列表编写javascript 如果不想使用应该使用的模型,则必须将这些项添加到ViewData中 我会帮你删掉一些,你可以完成剩下的 在控制器内,创建所需内容的列表对象。如果您使用的是EntityFrameWork,这看起来会很熟悉
var list = context.Table.ToList();
List<System.Web.Mvc.SelectListItem> ddlItems = new List<System.Web.Mvc.SelectListItem>();
foreach (var item in list)
{
ddlItems.Add(new SelectListItem(){ Text = item.Text, Value = item.Value.ToString()});
}
ViewData["DDLItems"] = ddlItems;
@Html.DropDownListFor(x => x.LeagueId,
new SelectList((System.Collections.IEnumerable)ViewData["DDLItems"], "Value", "Text")
, "--Select League--", new { id = "league" })
然后在Ajax调用的success函数中,您将填充第二个dropdownlist
success: function (data) {
$.each(data, function (index, item)
$('#ddlDivision')
.append($('<option></option>')
.val(item.Value)
.html(item.Text))
当您说“从列表值”时,意味着您正在将一个值列表从控制器发送回视图,并且从该列表中希望创建一个下拉列表?如果您甚至不打算利用其功能html助手、模型绑定等,为什么要使用MVC呢。。创建视图模型以表示要显示的内容!至于你的第二个项目,谷歌MVC级联选择或在上面的搜索框中键入它,然后做一些搜索看看这个答案我同意@Stephen Mueck你应该使用MVC提供给你的很棒的助手。我不能使用模型,因为项目的设计很差。我需要提交一个简单的html表单,然后在控制器中重建模型。你说不能创建视图模型是什么意思?公共类MyViewModel{public int SomeValueToBindTo{get;set;}public SelectList TheListFoOptions{get;set;}}我想在控制器中调用一个操作方法,该方法根据第一个下拉列表的选择返回一个列表,怎么样possible@kayze然后返回类似于json列表的内容,然后使用javascript呈现它?@kayze我在回答中已经解释过,您需要进行Ajax调用。
public JsonResult GetDivisions(int leagueId)
{
var division = //similar to before, fill a list.
return Json(divisions, JsonRequestBehavior.AllowGet);
}
success: function (data) {
$.each(data, function (index, item)
$('#ddlDivision')
.append($('<option></option>')
.val(item.Value)
.html(item.Text))
var divisions = (from x in context.Division
select new
{
Text = league + " " + x.Region,
Value = x.DivisionId
}).ToList();