@Html.DropDownListFor(m => m.branch, CommonMethod.getBranch("",Model.branch), "--Select--", new { @multiple = "multiple" })
@Html.DropDownListFor(m => m.division, CommonMethod.getDivision(Model.branch,Model.division), "--Select--", new { @multiple = "multiple" })
Run Code Online (Sandbox Code Playgroud)
我有两个DropDownListFor实例.我想为之前为Model.branch和Model.division存储的值设置为true.这些是存储的id的字符串数组
class CommonMethod
{
public static List<SelectListItem> getDivision(string [] branchid , string [] selected)
{
DBEntities db = new DBEntities();
List<SelectListItem> division = new List<SelectListItem>();
foreach (var b in branchid)
{
var bid = Convert.ToByte(b);
var div = (from d in db.Divisions where d.BranchID == bid select d).ToList();
foreach (var d in div)
{
division.Add(new SelectListItem { Selected …Run Code Online (Sandbox Code Playgroud) 我试过搜索,没有发现任何解决我问题的方法.我在Razor视图上有一个DropDownList,它不会显示我在SelectList中标记为Selected的项目.以下是填充列表的控制器代码:
var statuses = new SelectList(db.OrderStatuses, "ID", "Name", order.Status.ID.ToString());
ViewBag.Statuses = statuses;
return View(vm);
Run Code Online (Sandbox Code Playgroud)
这是查看代码:
<div class="display-label">
Order Status</div>
<div class="editor-field">
@Html.DropDownListFor(model => model.StatusID, (SelectList)ViewBag.Statuses)
@Html.ValidationMessageFor(model => model.StatusID)
</div>
Run Code Online (Sandbox Code Playgroud)
我遍历它,甚至在视图中它具有正确的SelectedValue但是DDL始终显示列表中的第一个项目,而不管选择的值如何.任何人都可以指出我做错了让DDL默认为SelectValue吗?
我已经看到类似的例子,人们需要填充一个对象列表,但我想要实现的是在我的DropdownlistFor中有数字1-10.有一种简单的方法可以做到这一点.以下是我所拥有的.
<div class="form-group">
@Html.LabelFor(model => model.NumberOfTickets, new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.DropDownListFor(model => model.NumberOfTickets)
@Html.ValidationMessageFor(model => model.NumberOfTickets)
</div>
</div>
Run Code Online (Sandbox Code Playgroud) 我在Razor视图的下拉列表中有一个项目列表.在数据库中,每个项目都有3个与之关联的值 - 数据库ID,短名称(用于显示)和长名称(用于传递给服务).下拉列表必须显示短名称,因此我填充下拉列表,其中数据库ID为值,短名称为文本.
然而,当用户选择项目时,我需要将长名称作为查询参数传递给使用jQuery的搜索服务,例如当选择Cortina时,需要将"Ford Cortina 1979 Blue"传递给该服务.我的第一个想法是将长名称存储为数据短划线属性,但我想知道是否有更好的方法.所以
D B:
CARID SHORT_NAME LONG_NAME
1 Viper Dodge Viper 1982
2 Boxster Porsche Boxster 2009 Black
3 Cortina Ford Cortina 1979 Blue
Run Code Online (Sandbox Code Playgroud)
控制器助手创建下拉列表:
public static IEnumerable<SelectListItem> GetSelectList(this IEFRepository repository, string typeName)
{
var vehicle = repository.TypeTypes.FirstOrDefault(t => t.Name.ToUpper() == typeName);
if (vehicle != null)
{
var carList = vehicle.SubTypes.ToList().OrderBy(s => s.Name);
var selectList = new SelectList(subTypeList, "SubTypeID", "Name");
return selectList;
}
}
Run Code Online (Sandbox Code Playgroud)
这是我用来创建下拉列表的代码:
<div class="editor-field">
@Html.DropDownListFor(model => model.CarID,
new SelectList(ViewBag.Cars, "Value", …Run Code Online (Sandbox Code Playgroud) 我必须Html.DropDownList静态绑定一个只有两个项目.
Text="Yes" Value="1"
Text="No" Value="0"
Run Code Online (Sandbox Code Playgroud)
重要的是,我必须设置文本和值字段.
我怎样才能做到这一点?
在看了谷歌和Stack Overflow几个小时之后,我找不到一个如何构建一个完全没有来自数据库的脑死亡简单下拉列表的血腥示例.老实说,我很难理解MVC.有人可以告诉我如何创建这个:
<select name="FooBarDropDown" id="FooBarDropDown">
<option value="Option1" selected>This is Option 1</option>
<option value="Option2">This is Option 2</option>
<option value="Option3">This is Option 3</option>
</select>
Run Code Online (Sandbox Code Playgroud)
使用这个:
@Html.DropDownList....
Run Code Online (Sandbox Code Playgroud)
我正在寻找一个一体化的解决方案......在视图中.我在语法上有一段时间的魔鬼.
我是MVC的新手(我正在从传统的ASP.Net的黑暗面转移)而且我知道SO更像是"为什么这不起作用",但是,对于MVC来说,我只想问问如何实现了一些东西 - 我真的没有任何代码或标记,因为我现在不知道如何.
是的,使用一个类似的例子......我有一个表单,其中包含一个"Widgets"列表的下拉列表(由于SO而有效)...然后还有其他字段(长度/高度/宽度) )具有"默认"值.
当表单显示时,显示下拉列表,但L/H/W的表单字段为空/禁用,直到用户从DDL中选择一个.
现在,在clasic ASP.Net世界中,你会在"onselectedindexchange"上做一个PostBack,然后查看所选的项目,然后使用"master widget entry"版本中的值更新L/H/W字段.
由于MVC没有回发......这是如何实现的?
了解下拉列表,我试图添加一个RSD创建页面为nerddinner,如Scott Gu的博客与Html.DropDownListFor列出可用的晚餐.
我可以填充下拉列表但我无法获得下拉菜单以预先选择我想要的值("示例晚餐2").我使用启动器在数据库中播种一些晚餐对象.数据库是使用EF'代码第一种方法'的sql ce 4.对不起,我知道这是常见的问题,讨厌问,但老实说已经花了相当长的时间,但不能让它工作:
视图模型
public class RSVPViewModel
{
public SelectList DinnersList { get; set; }
public RSVP Rsvp { get; set; }
public string SelectedItem { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
调节器
//
//GET: /RSVP/Create
public ActionResult Create()
{
RSVP rsvp = new RSVP();
string selected = "Sample Dinner 2";
var typeList = new SelectList(dbc.Dinners.ToList(), "DinnerID", "Title", selected);
var viewModel = new RSVPViewModel { DinnersList = typeList, Rsvp = rsvp, SelectedItem = selected };
return View("Create", viewModel); …Run Code Online (Sandbox Code Playgroud) 关于DropDownListFor不选择"已选择"值的另一个问题.这是代码:
模型:
public class CreateEditAccountModel
{
[Required]
[Display(Name = "Permission")]
public int PermissionId { get; set; }
public IEnumerable<SelectListItem> Permissions { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
控制器:
[HttpGet]
[Authorize]
public ActionResult EditAccount(int id)
{
CreateEditAccountModel model = new CreateEditAccountModel();
model.Permissions = PermissionsAll();
return View("CreateEditAccount", model);
}
Run Code Online (Sandbox Code Playgroud)
此时,如果我在返回线上放置一个断点,则model.Permissions包含IEnumerable<SelectListItem>具有多个项目且只有一个的正确对象Selected = true.
视图:
@using (Html.BeginForm())
{
@Html.DropDownListFor(m => m.PermissionId, Model.Permissions)
}
Run Code Online (Sandbox Code Playgroud)
呈现:
<select id="PermissionId" name="PermissionId">
<option value="">-- Select --</option>
<option value="1">Permission one</option>
<option value="2">Permission …Run Code Online (Sandbox Code Playgroud) 我正在使用MVC.我想传递我从视图中输入的类别数据并传递给我的Post/Createcontroller,但这并不是让我传递我从下拉列表中选择的categoryTypeID.
这是错误:
DataBinding:'System.Web.Mvc.SelectListItem'不包含名为'CategoryTypeID'的属性.
这是我的代码:
My CreateController:
//
// POST: /Category/Create
[HttpPost]
public ActionResult Create(Category category)
{
if (ModelState.IsValid)
{
db.Categories.Add(category);
db.SaveChanges();
return RedirectToAction("Index");
}
ViewBag.CategoryTypes = new SelectList(db.CategoryTypes, "CategoryTypeID", "Name", category.CategoryTypeID);
return View(category);
}
My Create View
@model Haykal.Models.Category
<div class="editor-label">
@Html.LabelFor(model => model.CategoryTypeID, "CategoryType")
</div>
<div class="editor-field">
@Html.DropDownListFor(model => model.CategoryTypeID,
new SelectList(ViewBag.CategoryTypes as System.Collections.IEnumerable, "CategoryTypeID", "Name"),
"--select Category Type --", new { id = "categoryType" })
@Html.ValidationMessageFor(model => model.CategoryTypeID)
</div>
Run Code Online (Sandbox Code Playgroud)