天道酬勤,学无止境

MVC5视图下拉列表(MVC5 view drop down list)

问题

在C#MVC5 Internet应用程序视图中,如何显示下拉列表供用户选择从“ View Model列表中填充的列表项?

这是ViewModel代码:

public class MapLocationItemViewModel
{
    [Editable(false)]
    public int mapLocationForeignKeyId { get; set; }
    public List<string> mapLocationItemTypes { get; set; }
    public MapLocationItem mapLocationItem { get; set; }
}

这是我当前在View拥有的代码:

<div class="form-group">
    @Html.LabelFor(model => model.mapLocationItem.mapLocationItemType, new { @class = "control-label col-md-2" })
    <div class="col-md-10">
        @Html.EditorFor(model => model.mapLocationItemTypes)
    </div>
</div>

mapLocationItemTypes中的每个项目当前都显示为class="text-box single-line valid"

是否有MVC View标记将显示从list<string>array填充的list<string>

我尝试了以下代码:

@Html.DropDownListFor(model => model.mapLocationItemTypes)

但是,我遇到了编译错误,并且不确定重载方法的值。

如何在视图中显示列表的最佳方式是什么,以便用户可以从列表中选择列表项?

提前致谢

回答1

模型 :

 public List<SelectListItem> mapLocationItemTypes { get; set; }
 public int mapLocationItemVal { get; set; }

看法:

@Html.DropDownListFor(m => m.mapLocationItemVal , new SelectList(Model.mapLocationItemTypes , "Value", "Text"), "  -----Select List-----  ")

在上面的示例中, DropDownListFor()的第三个参数DropDownListFor()" -----Select List----- "将是下拉菜单的初始选定项,其值等于''

在POST期间,在Controller上, mapLocationItemVal将具有选定的下拉值。

上面显示的代码是在MVC中绑定Dropdownlist的最好和最简单的方法。

回答2

试试这个;

我假设您在发布数据时需要根据所选值填充mapLocationItem.mapLocationItemType

@Html.DropDownListFor(model => model.mapLocationItem.mapLocationItemType, new SelectList(Model.mapLocationItemTypes))

如果要添加CSS类,可以按以下步骤进行。

@Html.DropDownListFor(model => model.mapLocationItem.mapLocationItemType, new SelectList(Model.mapLocationItemTypes), new { @class = "your-class" })
回答3

在控制器中创建方法

Public ActionResult Index()
{
   SampleDBContext db = new SampleDBContext();
   ViewBag.table_name = new SelectList(db.table_name, "DataValueField", "DataTextField");

   return View();
} 

控制器视图

@Html.DropDownList("table_name", "select a item")

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • 值不能为空。 参数名称:项目(在下拉列表中)ASP.NET MVC5(Value cannot be null. Parameter name: items (in Dropdown List) ASP.NET MVC5)
    问题 我的代码有问题。 我使用的是MVC5随附的注册表,我添加了一个字段“ Role”作为Dropdownlist,以在创建新用户时为该用户分配角色。 如下图所示: 现在,为了做到这一点,我修改了“ RegisterViewModel”并添加了以下属性: public IdentityRole Role { get; set; } [Required] [Display(Name = "Roles List")] public IEnumerable<IdentityRole> RolesList { get; set; } 在“ AccountController”中,我更改了注册操作,该操作获得了注册表格,如下所示: // GET: /Account/Register [AllowAnonymous] public ActionResult Register() { var _context = new ApplicationDbContext(); var roles = _context.Roles.ToList(); var viewModel = new RegisterViewModel { RolesList = roles }; return View(viewModel); } 在视图“ Register.cshtml”中
  • 在ASP.NET MVC5中绑定@ Html.DropDownListFor的最佳方法是什么?(What is the best ways to bind @Html.DropDownListFor in ASP.NET MVC5?)
    问题 我想在不使用Viewbag情况下从Model数据绑定@Html.DropDownListFor ,并在网络上查看许多不同的示例。 但是他们大多数使用Viewbag或扩展方法,我希望有一种更好的方法来解决此问题。 我尝试了以下方法,但它似乎不起作用: @Html.DropDownListFor(m => m.LabId, new SelectList(Model.Lab, "Id", "Name"), "---- Select----", new { @class = "selectpicker" } ) 是否可以在不使用Viewbag或ASP.NET MVC5的Controller中任何其他方法的情况下直接从Model绑定@Html.DropDownListFor ASP.NET MVC5 ? 您能否举一些例子来达到最佳效果? 回答1 强类型视图模型方法,不使用诸如ViewBag之类的动态内容 您可以将类型为IEnumrable<SelectListItem>的SELECT选项添加到视图模型中。 视图模型是一个简单的POCO类,用于在视图到动作方法之间进行数据传输,反之亦然。 它们是特定于视图的。 添加仅视图所需的属性。 public class CreateUserVm { public IEnumrable<SelectListItem> Labs { set;get;}
  • MVC5 Razor html.dropdownlist用于在值位于数组中时选择的设置(MVC5 Razor html.dropdownlistfor set selected when value is in array)
    问题 我正在使用C#和.NET Framework 4.6.1开发ASP.NET MVC 5应用程序。 我有这个View : @model MyProject.Web.API.Models.AggregationLevelConfViewModel [...] @Html.DropDownListFor(m => m.Configurations[0].HelperCodeType, (SelectList)Model.HelperCodeTypeItems, new { id = "Configurations[0].HelperCodeType" }) ViewModel是: public class AggregationLevelConfViewModel { private readonly List<GenericIdNameType> codeTypes; private readonly List<GenericIdNameType> helperCodeTypes; public IEnumerable<SelectListItem> CodeTypeItems { get { return new SelectList(codeTypes, "Id", "Name"); } } public IEnumerable<SelectListItem>
  • MVC5 view drop down list
    In a C# MVC5 Internet application view, how can I display a dropdown list for a user to select a list item that is populated from a View Model list? Here is the ViewModel code: public class MapLocationItemViewModel { [Editable(false)] public int mapLocationForeignKeyId { get; set; } public List<string> mapLocationItemTypes { get; set; } public MapLocationItem mapLocationItem { get; set; } } Here is the code that I currently have in the View: <div class="form-group"> @Html.LabelFor(model => model.mapLocationItem.mapLocationItemType, new { @class = "control-label col-md-2" }) <div class="col-md
  • VS2013无法编译ASP.NET MVC5视图(VS2013 does not compile ASP.NET MVC5 views)
    问题 我的Visual Studio Ultimate 2013 Update 4无法编译ASP.NET MVC 5视图。 尽管编译总是成功的,但是编译错误偶尔会出现在视图上。 Intellisense还在视图中打开和关闭。 我想说它在VS2012中工作得更好(我在那个版本上没有太多的MVC)。 我试图将<MvcBuildViews>true</MvcBuildViews>到.csproj文件,该文件<MvcBuildViews>true</MvcBuildViews>在VS2010中起作用,但现在不再起作用。 知道可能是什么问题吗? 更新:我正在寻找在视图上看到错误的方式,就像在VS的早期版本中所发生的那样。 回答1 您的项目是否包含目标并在构建事件后挂入? 从命令行尝试msbuild WebApplication1.csproj /t:MvcBuildViews ,它将检查您是否同时设置了默认属性和定义的目标。 <PropertyGroup> <MvcBuildViews>true</MvcBuildViews> </PropertyGroup> <Target Name="MvcBuildViews" AfterTargets="AfterBuild" Condition="'$(MvcBuildViews)'=='true'"> <AspNetCompiler
  • 如何将MVC5添加到Visual Studio 2013?(How to add MVC5 to Visual Studio 2013?)
    问题 我正在开始一个新项目,并想尝试一下MVC 5(我之前已经使用MVC 4构建了一个Web应用程序)。 在Visual Studio 2013中,我单击“新建项目”并导航到“ Visual C#”>“ Web”>“ Visual Studio 2012”(即使我已经在菜单中安装了VS 2013,它说的是“ 2012”),并且在该列表上我只有MVC 4应用程序-而不是5。 下拉菜单中的框架设置为.NET Framework 4.5.1-仍然没有。 我检查了“工具”>“扩展和更新”并搜索了MVC 5-但找不到Microsoft提供的任何官方软件。 如何将MVC 5添加到我的Visual Studio 2013中? 谢谢 回答1 对于不同的ASP.Net功能,Visual Studio 2013不再具有单独的项目类型。 您必须选择.NET Framework 4.5(或更高版本)才能查看ASP.NET Web应用程序模板(对于ASP.NET One)。 因此,只需选择“ Visual C#”>“ Web”>“ ASP.NET Web应用程序”,然后在下一步中选择“ MVC”复选框。 注意:请确保不要选择C#> Web> Visual Studio 2012子文件夹。 回答2 MVC 5已内置到Visual Studios 2013中。 打开一个新项目,在左侧确保您位于“模板”>“
  • MVC5-如何在DropDownListFor Html helper中设置“ selectedValue”(MVC5 - How to set “selectedValue” in DropDownListFor Html helper)
    问题 如问题所述:如何在DropDownListFor Html帮助程序中设置selectedValue? 尝试了大多数其他解决方案,但都没有奏效,这就是为什么我要提出一个新问题。 这些都无济于事: @Html.DropDownListFor(m => m.TipPopustaId, new SelectList(Model.TipoviDepozita, "Id", "Naziv", 2), htmlAttributes: new { @class = "form-control" }) //Not working with or without cast @Html.DropDownListFor(m => m.TipPopustaId, new SelectList(Model.TipoviDepozita, "Id", "Naziv", (ProjectName.Models.TipDepozita)Model.TipoviDepozita.Single(x => x.Id == 2)), htmlAttributes: new { @class = "form-control" }) @Html.DropDownListFor(m => m.TipPopustaId, new SelectList(Model.TipoviDepozita, "Id", "Naziv",
  • 验证asp.net mvc中的dropdownlist(validate a dropdownlist in asp.net mvc)
    问题 //in controller ViewBag.Categories = categoryRepository.GetAllCategories().ToList(); //in view @Html.DropDownList("Cat", new SelectList(ViewBag.Categories,"ID", "CategoryName")) 我如何才能使它默认显示为“ -Select Category-” 并验证以检查是否选中了某些内容(客户端和模型) 谢谢 回答1 我只是简直不敢相信,仍然有人在ASP.NET MVC 3中使用ViewData / ViewBag而不是具有强类型化的视图和视图模型: public class MyViewModel { [Required] public string CategoryId { get; set; } public IEnumerable<Category> Categories { get; set; } } 并在您的控制器中: public class HomeController: Controller { public ActionResult Index() { var model = new MyViewModel { Categories = Repository.GetCategories() }
  • MVC5 ViewModel验证远程(MVC5 ViewModel Validation Remote)
    问题 我正在尝试在与验证视图模型相同的阶段验证用户名,其余验证工作正常,但是我正在尝试使用以下代码段检查用户名是否已在使用中: // Cut down code to keep it simple. public class UserAccountRegistration { [Remote("CheckUsername", "Validation", ErrorMessage = "Username already exists.")] public string Username { get; set; } } 我在Controllers目录中有一个名为“ ValidationController.cs”的控制器,该控制器包含以下内容: using System; using System.Web.Mvc; using Test.Helpers; using System.Data.SqlClient; using System.Data; namespace Test.Controllers { public class ValidationController : Controller { // GET: Validation public ActionResult Index() { return View(); } [HttpGet] public JsonResult
  • 视图中下拉列表中的Rails格式日期(Rails Format Date in Drop Down List in View)
    问题 我可以帮助您格式化视图中for的下拉列表中的日期字段。 我的日期显示有时间戳,我希望它们显示为“ mm / dd / yyyy”。 在我的模型中,我有一种从表中选择日期字段的方法: def self.get_event_dates event_dates = UgradRsvp.find_by_sql("select distinct event_date from admissions.ugrad_rsvps where event_date is not null order by event_date desc") end 我们使用Oracle作为数据库,因此我也尝试使用to_char(event_date,'MM / DD / YYYY')作为event_date,但是下拉菜单中的日期仍然带有时间戳。 我的看法是搜索表格。 用户将选择一个日期,然后查看在该event_date上报名参加活动的所有学生的报告: <%= select_tag "event_date", options_from_collection_for_select(UgradRsvp.get_event_dates, "event_date", "event_date") %> 我的表ugrad_rsvps中大约有八个日期。 它们显示为,即:“ 2013-04-18 00:00:00 -0400
  • 如何创建级联下拉列表(How to create cascading drop-down list)
    问题 我有两个下拉列表用于过滤目的。如何将该下拉列表更改为catchcadaing下拉列表 public ActionResult Index() { REFINED_DBEntities db = new REFINED_DBEntities(); ViewBag.Subdivision = new SelectList(db.Retention_Model_Predictions_DS_Manual.Select(m => m.Subdivision).Distinct().OrderBy(c=>c.ToUpper()), "Subdivision"); ViewBag.UnderwriterName = new SelectList(db.Retention_Model_Predictions_DS_Manual.Select(m => m.Underwriter_Name).Distinct(), "Underwriter_Name"); return View(); } HTML视图 <div class="form-group "> @Html.DropDownList("Subdivision", (IEnumerable<SelectListItem>)ViewBag.Subdivision, "Select Region", new { @class =
  • MVC ViewBag最佳做法(MVC ViewBag Best Practice)
    问题 对于ViewBag,我听说这是不可以使用的。 我认为应该将ViewBag中的内容合并到视图模型中吗? 问题: 我的假设是最佳实践之上。 (不要使用ViewBag,第二次要在视图模型中使用它) 在某些情况下绝对需要ViewBag吗? 回答1 ViewBag是一个动态词典。 因此,当使用ViewBag在操作方法和视图之间传输数据时,如果尝试在视图中访问ViewBag项时在代码中输入错误,则编译器将无法捕获。 您的视图将在运行时崩溃:( 通常,使用视图模型在操作方法和视图之间传输数据是一个好主意。 视图模型是一个简单的POCO类,具有特定于视图的属性。 因此,如果您想传递一些其他数据进行查看,请在视图模型中添加一个新属性并使用它。严格键入的视图可以使代码更整洁且更易于维护。 使用这种方法,您无需将Viewbag字典项显式地转换为来回往返于View Bag的某些类型。 public class ProductsForCategoryVm { public string CategoryName { set;get; } public List<ProductVm> Products { set;get;} } public class ProductVm { public int Id {set;get;} public string Name { set;get;} }
  • 如何通过对控制器的Ajax调用在MVC5中呈现部分视图并返回HTML(How to render partial view in MVC5 via ajax call to a controller and return HTML)
    问题 如何使用AJAX加载以html呈现的完整局部视图(所以我只设置了div.html) 我需要ajax调用来调用控制器操作,该操作将呈现完整的局部视图(红色)并将其附加到当前加载的视图的末尾吗? [我知道如何附加到DOM以及如何进行AJAX调用] 我需要知道什么是最好的管道方法,该动作应返回哪种类型的ActionResult,以及是否已经有内置的机制以避免重新发明轮子? 回答1 ASP.NET MVC中有内置的Ajax帮助器,可以覆盖基本方案。 您需要安装并引用jquery.unobtrusive-ajax JavaScript库(+ jQuery依赖关系)。 然后在您的主视图(假设为index.cshtml)中输入以下代码: Index.cshtml @Ajax.ActionLink("Load More Posts", "MorePosts", new AjaxOptions() { HttpMethod = "GET", AllowCache = false, InsertionMode = InsertionMode.InsertAfter, UpdateTargetId = "posts-wrapper" }) <div id="posts-wrapper"></div> 注意: @Ajax.ActionLink帮助器接受AjaxOptions参数以进行更多自定义。
  • 如何使用另一个下拉列表过滤下拉列表的选项(How to filter the options of a drop down list using another drop down list)
    问题 我是ASP.NET的新手,正在使用ASP.Net的MVC 3框架。 我试图使用另一个下拉列表过滤下拉列表的选项,但我无法做到这一点。 我首先尝试通过填充主要类别和子类别的列表并将它们加载到页面中来进行此操作,然后将每个子类别的选项的class属性设置为其父类别。 最后,在第一个下拉列表中单击父类别时,仅显示子子类别并隐藏其余子类别(这是我以前在Java中所做的方式)。 但是在ASP.Net MVC中,html代码是如此不同,我什至不能为下拉菜单的每个选项设置class属性,它通常为所有下拉菜单而不是每个选项设置类。 这就是我现在所拥有的这是我的看法 <p> @Html.LabelFor(model => model.CategoryId) @Html.DropDownListFor(x => x.CategoryId , new SelectList(Model.Categories, "CategoryId", "CategoryName"), new { onchange= "this.form.submit();"}) </p> <p> @Html.LabelFor(model => model.SubCategories) @Html.DropDownListFor(x => x.SubCategories, new SelectList(Model
  • MVC 3 Razor视图中的级联下拉菜单(Cascading drop-downs in MVC 3 Razor view)
    问题 我对如何在Razor视图中实现地址的级联下拉列表感兴趣。 我的网站实体具有SuburbId属性。 郊区有一个CityId,而城市有ProvinceId。 我想在“站点”视图上显示所有郊区,城市和省的下拉菜单,例如,郊区下拉菜单最初将显示“首先选择一个城市”,而城市下拉列表将首先显示“首先选择一个省”。 在选择省份时,将填充省份中的城市等。 我怎样才能做到这一点? 我从哪说起呢? 回答1 让我们用一个例子来说明。 一如既往地从模型开始: public class MyViewModel { public string SelectedProvinceId { get; set; } public string SelectedCityId { get; set; } public string SelectedSuburbId { get; set; } public IEnumerable<Province> Provinces { get; set; } } public class Province { public string Id { get; set; } public string Name { get; set; } } 接下来的控制器: public class HomeController : Controller { public
  • ios8 iPad uiwebview在用户点击下拉列表HTML选择标签时显示弹出窗口时崩溃(ios8 iPad uiwebview crashes while displaying popover when user taps drop down list HTML select tag)
    问题 在ios8和iPad上,如果uiwebview正在显示包含下拉列表的HTML页面 例如,此页面http://www.w3schools.com/tags/tryit.asp?filename=tryhtml_select 然后 反复点击包含汽车列表的HTML下拉列表。 第一项是沃尔沃。 每隔1/2秒点击一次,以便uipopover打开和关闭应用程序将崩溃: 由于出现未捕获的异常'NSGenericException'而终止应用程序,原因:'UIPopoverPresentationController()在演示之前应设置非null的sourceView或barButtonItem。 无论如何,在uiwebview中可以解决此问题吗? 使用wkwebview不会发生这种情况,但是我想在uiwebview修复它。 更新:这似乎有所帮助,但不确定副作用。 我在包含uiwebview的视图控制器中重写了以下内容。 -(void)dismissViewControllerAnimated:(BOOL)flag completion:(void (^)(void))completion { if (completion) { completion(); } [super dismissViewControllerAnimated:NO completion:nil]; } 回答1
  • 在ASP.NET MVC 4中填充和选择下拉列表值(Populating and Selecting a Drop Down List Value in ASP.NET MVC 4)
    问题 ASP.NET MVC中的下拉列表使我感到困惑。 我有一个模型课。 该模型类具有一个名为SelectedValue的字符串。 此字符串表示先前选择的值。 我有一些从数据库中提取的项目。 集合的每个项目都有一个ID和一个Name值。 我的问题是,我不知道将这些信息输入UI的推荐方法是什么。 我不确定是否应该使用ViewBag或Model。 一旦有了值,我什至不知道填充UI的最佳方法是什么。 我见过HTML帮助者和使用RAZOR语法的人。 我很困惑人们推荐什么? 谢谢 回答1 这就是我的做法,可以说您有2个模型Team and Player : Player.cs public class Player { [HiddenInput(DisplayValue = false)] [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)] public int Id { get; set; } [Required] [ForeignKey("Team")] [Display(Name = "Team")] public int TeamId { get; set; } [Display(Name = "First name")] public string FirstName { get; set; } [Display
  • Android Spinner具有用于“下拉状态”和“关闭状态”的不同布局?(Android Spinner with different layouts for “drop down state” and “closed state”?)
    问题 我的布局中有一个Android Spinner视图。 我希望该微调器在关闭时仅显示单个文本项,但是当用户单击它时(即打开微调器对话框),我想显示每个项的更多信息,包括图标和附加的描述文本视图。 现在,微调器在两种状态下显示的布局都非常相同(图标,标题和说明)。 如果将ArrayAdapter附加到微调器,则可以访问名为“ setDropDownViewResource”的东西,但这不一定是我所需要的,因为微调器数据是从游标而不是从任何类型的数组中获取的(到目前为止,我已经拥有了) ,创建了我自己的适配器,扩展了BaseAdapter)。 有人可以帮助我吗? 回答1 您必须为Spinner创建一个自定义Adapter类,并为正常关闭视图覆盖两个方法getView()和为下拉列表视图覆盖getDropDownView()。 这两种方法都必须为单个元素返回一个View对象。 看一下本教程,它可能会帮助您入门。 回答2 我也有问题。 我没有覆盖整个类,而是拥有一种更简单的方法来做到这一点。 但是首先,您需要了解适配器构造函数中的资源ID与setDropDownViewResource(...)的另一个ID之间的区别。 例如, SimpleAdapter adapter = new SimpleAdapter(ab.getThemedContext(), data, R.layout
  • iOS下拉视图[关闭](iOS drop down view [closed])
    问题 关闭。 此问题不符合堆栈溢出准则。 它当前不接受答案。 想要改善这个问题吗? 更新问题,使它成为Stack Overflow的主题。 4年前关闭。 改善这个问题 我一直在寻找下拉视图(展开和折叠视图),当用户单击它或折叠时,该视图基本上会展开。 下拉菜单主要用于包含textview / textfield。 直到现在,我仍无法找到如何创建此下拉视图的方法。 我设法找到的是下拉菜单,有点像允许您选择一个选项的选择器。 我只想只包含文字。 是否可以要求一些有关此的指示? 谢谢。 回答1 我还需要一个类似HTML select的控件(单选下拉列表),而又不会破坏过去和将来的iOS版本的XCode旧版GUI界面。 我最终编写了DownPicker ,这是一个轻量级的控件,仅将UITextField和UIPickerView结合在一起即可。 它既可以用作自定义控件( UIDownPicker ),也可以用作控件包装,从而升级任何现有的UITextField 。 看起来是这样的: 有关更多信息和下载,您可以查看此简短教程或GitHub项目页面(均由我撰写-该项目为开源)。 回答2 是的。 ios中没有可用的下拉组件。 而构建一个基本组件确实令人沮丧。 但是,VPPDropDown可以解决您的问题。 https://github.com/vicpenap/VPPDropDown 回答3
  • 模型中的MVC5 Razor NullReferenceException(MVC5 Razor NullReferenceException in Model)
    问题 出于某种原因,每当我尝试访问模型时都会收到NullReferenceException。 这是我的控制器中的代码: public async Task<ActionResult> Bar(string fooSlug, int barId) { var foo = await mediaService.GetFoo(fooSlug); var bar = await barService.GetBarFromFooByTitleId(foo.TitleId, barId); var viewModel = new ViewModels.BarViewModel(foo, bar); return View(viewModel); } 来自ViewModel的代码: public class BarViewModel { public Models.Sub.FooDetails Foo{ get; set; } public Models.Sub.BarDetails Bar { get; set; } public BarViewModel(Models.Sub.FooDetails foo, Models.Sub.BarDetails bar) { this.Foo = foo; this.Bar = bar; } } 我的看法: @model FooBar