Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MVC 4-使用型号列表填充DropDownList for_List_Asp.net Mvc 4_Lambda_Dropdownlistfor - Fatal编程技术网

MVC 4-使用型号列表填充DropDownList for

MVC 4-使用型号列表填充DropDownList for,list,asp.net-mvc-4,lambda,dropdownlistfor,List,Asp.net Mvc 4,Lambda,Dropdownlistfor,我试图在我的视图中填充dropdownlistfor,但我不知道正确的lambda表达式是否适用。见下面的代码: @model Website.Models.modelTeamSelect <h2>MatchSelect.cshtml</h2> @using (Ajax.BeginForm("_PartialTeams", new { model = this.Model }, new AjaxOptions

我试图在我的视图中填充dropdownlistfor,但我不知道正确的lambda表达式是否适用。见下面的代码:

@model Website.Models.modelTeamSelect


<h2>MatchSelect.cshtml</h2>

@using (Ajax.BeginForm("_PartialTeams",
    new
    {
        model = this.Model
    },
    new AjaxOptions
    {
        HttpMethod = "POST",
        UpdateTargetId = "divMatchScheduler",
        InsertionMode = InsertionMode.Replace
    }))
{

    <div id="divMatchScheduler">
         @Html.LabelFor(m => m.modelMatch.HomeTeam)
         @Html.DropDownListFor(m => m.modelMatch.HomeTeam, new SelectList
    {
      Items = Model.teams.Select(t => t.TeamName)  
    })
         @Html.LabelFor(m => m.modelMatch.AwayTeam)

         @Html.LabelFor(m => m.modelMatch.MatchDate)
         @Html.TextBoxFor(m => m.modelMatch.MatchDate)
    </div>

     <input type="submit" value="Add Match" name="btnSubmit" />


}
视图使用的我的模型及其包含的集合

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace Website.Models
{
    public class modelMatch
    {
       public Guid MatchID { get; set; }

       public Guid AwayTeamID { get; set; }
       public string AwayTeam { get; set; }

       public Guid HomeTeamID { get; set; }
       public string HomeTeam { get; set; }

       public DateTime MatchDate { get; set; }
    }
}

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace Website.Models
{
    public class modelTeamSelect
    {
        public modelTeamSelect()
        {
            teams = new List<modelTeam>();
            team = new modelTeam();
            modelMatch = new Models.modelMatch();
            modelMatches = new List<modelMatch>();
        }

        public List<modelTeam> teams { get; set; }
        public modelTeam team { get; set; }
        public modelMatch modelMatch { get; set; }
        public List<modelMatch> modelMatches { get; set; }

        public string message { get; set; }
    }
}
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用System.Web;
名称空间网站.模型
{
公共类模型匹配
{
公共Guid匹配ID{get;set;}
公共Guid{get;set;}
公共字符串AwayTeam{get;set;}
公共Guid HomeTeamID{get;set;}
公共字符串HomeTeam{get;set;}
公共日期时间匹配日期{get;set;}
}
}
使用制度;
使用System.Collections.Generic;
使用System.Linq;
使用System.Web;
名称空间网站.模型
{
公共类modelTeamSelect
{
公共modelTeamSelect()
{
团队=新列表();
团队=新模型团队();
modelMatch=新模型。modelMatch();
modelMatches=新列表();
}
公共列表组{get;set;}
公共模型团队{get;set;}
公共modelMatch modelMatch{get;set;}
公共列表模型匹配{get;set;}
公共字符串消息{get;set;}
}
}
摘要


如何使用我的模型中的列表集合填充下拉列表?

在大多数情况下,您需要使用
SelectList
填充下拉列表

@Html.DropDownListFor(m => m.modelMatch.HomeTeam, new SelectList(Model.teams, "dataValueField", "dataTextField"))
public static IEnumerable<SelectListItem> ObtenerPais(this HtmlHelper helper)
        {
            var cnx = new db();

            var resultado = cnx.PAIS.ToList()
                .Select(e => new SelectListItem
                {
                    Text = e.NOMBRE,
                    Value = Convert.ToString(e.ID_PAIS)
                }).ToList();

            //if (Default)
            resultado.Insert(0, new SelectListItem
            {
                Text = "-- Seleccionar --",
                Value = ""
            });

            return resultado;
        }
dataValueField
dataTextField
是您的
modelTeam
模型中的属性,将用作下拉列表的值和文本。

@{
@{
    <br />
    ViewBag.TeamList = Model.teams.Select(t => t.TeamName);
    <br />
}   

<br />

@Html.DropDownListFor(m => m.modelMatch.HomeTeam, ViewBag.TeamList as SelectList)

ViewBag.TeamList=Model.teams.Select(t=>t.TeamName);
}
@Html.DropDownListFor(m=>m.modelMatch.HomeTeam,ViewBag.TeamList作为SelectList)
您还可以创建HtmlHelperExtensions类来绑定下拉列表

@Html.DropDownListFor(m => m.modelMatch.HomeTeam, new SelectList(Model.teams, "dataValueField", "dataTextField"))
public static IEnumerable<SelectListItem> ObtenerPais(this HtmlHelper helper)
        {
            var cnx = new db();

            var resultado = cnx.PAIS.ToList()
                .Select(e => new SelectListItem
                {
                    Text = e.NOMBRE,
                    Value = Convert.ToString(e.ID_PAIS)
                }).ToList();

            //if (Default)
            resultado.Insert(0, new SelectListItem
            {
                Text = "-- Seleccionar --",
                Value = ""
            });

            return resultado;
        }

希望这有帮助

谢谢。这就是我想要的。我知道这篇文章很旧,但我想它可能会帮助别人。可以在数据文本字段后添加第三个选项以设置选定值@DropDownListFor(m=>m.modelMatch.HomeTeam,新的SelectList(Model.teams,“dataValueField”,“dataTextField”,“selectedValue”))