Html.DropdownListFor选定的值没有被设置
如何设置Html.DropDownListFor的选定值? 我一直在网上看,看到它可以通过使用第四个参数,如下所示:
@Html.DropDownListFor(m => m, new SelectList(Model, "Code", "Name", 0), "Please select a country")
我的select列表显示如下:
<select id="ShipFromCountries" name="ShipFromCountries"> <option value="">Please select a country</option> <option value="GB">United Kingdom</option> <option value="US">United States</option> ... </select>
但由于某些原因英国仍然被选中,但我想要“请select一个国家”来select。
任何人都知道我可以做到这一点?
编辑
我已经更新了我的代码,因为function上有轻微的变化,但似乎仍然遇到了这个问题。 这是我的看法:
@Html.DropDownListFor(n => n.OrderTemplates, new SelectList(Model.OrderTemplates, "OrderTemplateId", "OrderTemplateName", 1), "Please select an order template")
1
是我想要select的option
的ID,我也尝试了option
的文本,但也没有工作。
有任何想法吗?
你的代码有一些概念问题:
首先 ,
@Html.DropDownListFor(n => n.OrderTemplates, new SelectList(Model.OrderTemplates, "OrderTemplateId", "OrderTemplateName", 1), "Please select an order template")
使用DropDownListFor时,第一个参数是提交表单后所选值存储的属性。 所以,在你的情况下,你应该有一个SelectedOrderId
作为你的模型或类似的东西的一部分,以便以这种方式使用它:
@Html.DropDownListFor(n => n.SelectedOrderId, new SelectList(Model.OrderTemplates, "OrderTemplateId", "OrderTemplateName", 1), "Please select an order template")
其次 ,
除了使用ViewBag,这是没有错,但有更好的方法(把这些信息放在ViewModel中), 当你的ViewBag属性,你持有SelectList的时候 , 会有一个“小错误”(或者一个不确定的行为)与放置所选值的属性名称相同 。 为避免这种情况,只需在命名包含项目列表的属性时使用其他名称。
我会使用一些代码,如果我是你要避免这个问题,并写出更好的MVC代码:
视图模型:
public class MyViewModel{ public int SelectedOrderId {get; set;} public SelectList OrderTemplates {get; set;} // Other properties you need in your view }
控制器:
public ActionResult MyAction(){ var model = new MyViewModel(); model.OrderTemplates = new SelectList(db.OrderTemplates, "OrderTemplateId", "OrderTemplateName", 1); //Other initialization code return View(model); }
在你的View中:
@Html.DropDownListFor(n => n.SelectedOrderId, Model.OrderTemplates, "Please select an order template")
对我而言,这样做并不是那么有效:
控制器:
int selectedId = 1; ViewBag.ItemsSelect = new SelectList(db.Items), "ItemId", "ItemName",selectedId);
视图:
@Html.DropDownListFor(m => m.ItemId,(SelectList)ViewBag.ItemsSelect)
JQuery的:
$("document").ready(function () { $('#ItemId').val('@Model.ItemId'); });
当你传递一个像这样的对象:
new SelectList(Model, "Code", "Name", 0)
你是说,源( Model
)和密钥( "Code"
)文本( "Name"
)和选定的值0
。 可能你的Code
属性的源Code
没有0
值,所以,html helper将select第一个元素。 要将真正的选定值传递给此控件。
确保您在分配之前修剪选定的值。
//模型
public class SelectType { public string Text { get; set; } public string Value { get; set; } }
//控制器
var types = new List<SelectType>(); types.Add(new SelectType() { Value = 0, Text = "Select a Type" }); types.Add(new SelectType() { Value = 1, Text = "Family Trust" }); types.Add(new SelectType() { Value = 2, Text = "Unit Trust"}); ViewBag.PartialTypes = types;
//视图
@Html.DropDownListFor(m => m.PartialType, new SelectList(ViewBag.PartialTypes, "Value", "Text"), new { id = "Type" })
如果您知道视图中的内容,您也可以从Controller中设置默认值,然后将其设置到view / cshtml文件中。 不需要从HTML端设置默认值。
在控制器文件中。
commission.TypeofCommission = 1; return View(commission);
在.cshtml文件中。
@Html.DropDownListFor(row => row.TypeofCommission, new SelectList(Model.commissionTypeModelList, "type", "typeName"), "--Select--")
你应该忘记课程
的SelectList
在你的控制器中使用这个:
var customerTypes = new[] { new SelectListItem(){Value = "all", Text= "All"}, new SelectListItem(){Value = "business", Text= "Business"}, new SelectListItem(){Value = "private", Text= "Private"}, };
select值:
var selectedCustomerType = customerTypes.FirstOrDefault(d => d.Value == "private"); if (selectedCustomerType != null) selectedCustomerType.Selected = true;
将列表添加到ViewData中:
ViewBag.CustomerTypes = customerTypes;
在你的View中使用这个:
@Html.DropDownList("SectionType", (SelectListItem[])ViewBag.CustomerTypes)
–
更多信息,请访问: http : //www.asp.net/mvc/overview/older-versions/working-with-the-dropdownlist-box-and-jquery/using-the-dropdownlist-helper-with-aspnet-mvc
添加控制器部分
ViewBag.Orders= new SelectList(db.Orders, "Id", "business", paramid);
添加Html部分
@Html.DropDownList("Orders", null)
一个简单的方法
对于我一般的解决scheme
@{ var selectedCity = Model.Cities.Where(k => k.Id == Model.Addres.CityId).FirstOrDefault(); if (selectedCity != null) { @Html.DropDownListFor(model => model.Addres.CityId, new SelectList(Model.Cities, "Id", "Name", selectedCity.Id), new { @class = "form-control" }) } else { @Html.DropDownListFor(model => model.Cities, new SelectList(Model.Cities, "Id", "Name", "1"), new { @class = "form-control" }) } }
Linq下拉空项目,选定项目(作品100%)
(强types,错误最小的机会)任何模型更改都会反映在绑定中
调节器
public ActionResult ManageSurveyGroup() { tbl_Survey sur = new tbl_Survey(); sur.Survey_Est = "3"; return View(sur); }
视图
@{ //Step One : Getting all the list var CompEstdList = (from ComType in db.tbl_CompEstdt orderby ComType.Comp_EstdYr select ComType).ToList(); //Step Two : Adding a no Value item ** CompEstdList.Insert(0, new eDurar.Models.tbl_CompEstdt { Comp_Estdid = 0, Comp_EstdYr = "--Select Company Type--" }); //Step Three : Setting selected Value if value is present var selListEstd= CompEstdList.Select(s => new SelectListItem { Text = s.Comp_EstdYr, Value = s.Comp_Estdid.ToString() }); } @Html.DropDownListFor(model => model.Survey_Est, selListEstd) @Html.ValidationMessageFor(model => model.Survey_Est)
这种绑定数据的方法也是可能的
var selList = CompTypeList.Select(s => new SelectListItem { Text = s.CompTyp_Name, Value = s.CompTyp_Id.ToString(), Selected = s.CompTyp_Id == 3 ? true : false });
- Html帮助<input type =“file”/>
- 在Html.DropDownList的<option>下添加html类标记
- 从ID列表更新entity framework中的多行
- 反映参数名称:滥用C#lambdaexpression式或语法辉煌?
- 在ASP.net MVC站点查看SSRS报告
- 在EditorFor()中显示一个格式化的date
- 如何在一个foreach中使用EditorFor
- 未find方法:'!! 0 System.Array.Empty()'。 ASApp.BundleConfig.RegisterBundles(BundleCollection包)inBundleConfig.cs
- JavaScript的string数组的AJAX Post作为List <String>的JsonResult总是返回空?