Asp.net mvc 4 dropdownlist选择返回null@mvc4
我正在尝试从具有dropdownlist(文本框)的查看页面插入数据库。。当我输入一些东西并点击save时,意味着我从绑定的下拉选择中没有得到任何东西Asp.net mvc 4 dropdownlist选择返回null@mvc4,asp.net-mvc-4,Asp.net Mvc 4,我正在尝试从具有dropdownlist(文本框)的查看页面插入数据库。。当我输入一些东西并点击save时,意味着我从绑定的下拉选择中没有得到任何东西 My code : @model IEnumerable<iWiseapp.Models.LObmodel> @using (@Html.BeginForm("stop", "Home", FormMethod.Post)) { @Html.DropDownList("Data",ViewBag.Data as
My code :
@model IEnumerable<iWiseapp.Models.LObmodel>
@using (@Html.BeginForm("stop", "Home", FormMethod.Post))
{
@Html.DropDownList("Data",ViewBag.Data as SelectList,"select a sdsd",new {id="LOB_ID"})
@Html.DropDownListFor("sss",new SelectList(Model,"lob_id","lob_name"))
,
@Html.DropDownList("LObmodel", new SelectList(ViewBag.data ,"Value","Text"))
@Html.DropDownListFor(model => model.lob_name, new SelectList(ViewBag.Titles,"Value","Text"))
我的代码:
@模型IEnumerable
@使用(@Html.BeginForm(“stop”、“Home”、FormMethod.Post))
{
@DropDownList(“Data”,ViewBag.Data作为SelectList,“选择一个sdsd”,new{id=“LOB_id”})
@Html.DropDownListFor(“sss”,新选择列表(型号,“lob\U id”,“lob\U名称”))
,
@DropDownList(“LObmodel”,新选择列表(ViewBag.data,“Value”,“Text”))
@Html.DropDownListFor(model=>model.lob_name,新选择列表(ViewBag.Titles,“Value”,“Text”))
我尝试了所有的可能性,但是没有,我很困惑,什么都没有解决
添加了我的控制代码
[HttpGet]
public ActionResult stop()
{
ServiceReference1.Service1Client ser_obj = new ServiceReference1.Service1Client();
IEnumerable<LobList> obj = ser_obj.GetData(); //i am Getting list of data through WCF from BUSINESS LAYER WHERE i created entities via EF
List<SelectListItem> ls = new List<SelectListItem>();
foreach (var temp in obj)
{
ls.Add(new SelectListItem() { Text = temp.LOB_NAME, Value = temp.LOB_ID.ToString() });
}
//then create a view model on your controller and pass this value to it
ViewModel vm = new ViewModel();
vm.DropDown = ls; // where vm.DropDown = List<SelectListItem>();
THE COMMENTED CODE BELOW IS WHAT I AM DOING
//var mode_obj = new List<LObmodel>();
//Created LOBmodel class in model which is excat same of entities in Business class
//var jobList = new List<SelectListItem>();
//foreach (var job in obj)
//{
// var item = new SelectListItem();
// item.Value = job.LOB_ID.ToString(); //the property you want to display i.e. Title
// item.Text = job.LOB_NAME;
// jobList.Add(item);
//}
//ViewBag.Data = jobList;
return View(jobList); or return view (obj)
}
[HttpGet]
公共行动结果停止()
{
ServiceReference1.Service1Client ser_obj=新的ServiceReference1.Service1Client();
IEnumerable obj=ser_obj.GetData();//我通过WCF从我通过EF创建实体的业务层获取数据列表
列表ls=新列表();
foreach(对象中的var temp)
{
添加(新SelectListItem(){Text=temp.LOB\u NAME,Value=temp.LOB\u ID.ToString()});
}
//然后在控制器上创建视图模型并将此值传递给它
ViewModel vm=新的ViewModel();
vm.DropDown=ls;//其中vm.DropDown=List();
下面的注释代码就是我正在做的
//var mode_obj=新列表();
//在模型中创建了LOBmodel类,该模型与业务类中的实体相同
//var jobList=新列表();
//foreach(obj中的var作业)
//{
//var item=new SelectListItem();
//item.Value=job.LOB_ID.ToString();//要显示的属性,即Title
//item.Text=job.LOB\u NAME;
//工作清单。添加(项目);
//}
//ViewBag.Data=作业列表;
返回视图(作业列表);或返回视图(obj)
}
任何专家建议都将不胜感激
我的领域,这些完美吗
public class template
{
public List<LobList> LOBs { get; set; } //LOBLIST FROM Entities in business layer
public int selectedLobId { get; set; }
public LobList SelectedLob
{
get { return LOBs.Single(u=>u.LOB_ID == selectedLobId) ;}
}
}
AND
public class LObmodel
{
public int LOB_ID { get; set; }
public string LOB_NAME { get; set; }
}
公共类模板
{
公共列表LOB{get;set;}//业务层中实体的LOBLIST
public int selectedLobId{get;set;}
公共LobList SELECTED LOB
{
获取{返回LOBs.Single(u=>u.LOB_ID==selectedLobId);}
}
}
及
公共类模型
{
public int LOB_ID{get;set;}
公共字符串LOB_NAME{get;set;}
}
我建议将选择列表放入您的模型中,而不是通过查看包传递。您需要的选项是
@Html.DropDownListFor(model => model.lob_name, new SelectList(ViewBag.Titles,"Value","Text"))
您可以通过在控制器上设置model.lob_name来设置所选项目,并在回发时将该值设置为下拉列表的所选值
在您的控制器上,您可以像这样构建列表
List<SelectListItem> ls = new List<SelectListItem>();
foreach(var temp in model){ //where model is your database
ls.Add(new SelectListItem() { Text = temp.Text, Value = temp.Value });
}
//then create a view model on your controller and pass this value to it
LObmodel vm = new LObmodel();
vm.DropDown = ls; // where vm.DropDown = List<SelectListItem>();
return View(vm);
使用您的模型添加选择列表
public class LObmodel
{
public int LOB_ID { get; set; }
public string LOB_NAME { get; set; }
public List<SelectListItem> DropDown { get; set; }
}
我也有同样的问题。
但我使用以下代码更改了DDL的视图代码:
@Html.DropDownListFor(x => x.ClassID, (SelectList)ViewBag.ClassName);
dropdownlist将绑定到名为ClassID的模型类。您将无法将ddl的文本值发布到控制器,只有ddl后面的ID。非常感谢您的有用见解问题1)将我的列表对象传递到视图,即视图(obj)我收到此错误[传入字典的模型项的类型为'entitymodel.LobList[],但此字典需要'entitymodel.LobList'类型的模型项]好的,请再次回复,伙计。在创建viewmodel obj时,我是否在这里遗漏了一些内容,如上面的显示错误,即缺少类型或命名空间viewmodel。我是否需要添加任何引用创建视图模型所需的引用。在该类中,您定义了要传递给视图的所有字段和列表。然后初始化CLAs、 填充它并将其发送到视图。是的,我正在这样做,请查看我的代码。请参阅我的主要帖子我发布了我的字段2类和控制器方法。因此,在我的代码中使用lobmodel而不是viewmodel,并将列表选择列表项添加到该类以供评论。通过viewbag获取数据实际上不是我的目标:)通过view和strongly类型。如果你也是像我这样的学习者,对mvc来说是非常新的。我建议你放弃上面提到的方法:)无论如何,谢谢你的回复。
@model LObmodel
@Html.DropDownListFor(x => x.ClassID, (SelectList)ViewBag.ClassName);