Asp.net mvc 如何在MVC4中创建下拉列表

Asp.net mvc 如何在MVC4中创建下拉列表,asp.net-mvc,asp.net-mvc-4,Asp.net Mvc,Asp.net Mvc 4,你能帮我在asp.NETMVC4中创建一个下拉列表吗 我有一个projetofunconario类,它是一个由“Projeto”和“functionario”组成的关联类 我应该为下拉列表创建一个类吗 我很难创建一个下拉列表。 你们能给我一些好的指导或提示吗 谢谢 课程计划 namespace Exercicio1.Models { public class ProjetoFuncionario { public Projeto IdProjeto { get;

你能帮我在asp.NETMVC4中创建一个下拉列表吗

我有一个projetofunconario类,它是一个由“Projeto”和“functionario”组成的关联类

我应该为下拉列表创建一个类吗

我很难创建一个下拉列表。 你们能给我一些好的指导或提示吗

谢谢

课程计划

namespace Exercicio1.Models
{
    public class ProjetoFuncionario
    {
        public Projeto IdProjeto { get; set; }
        public Funcionario IdFuncionario { get; set; }



    }


}

退房。我建议在视图模型中为下拉列表添加一个属性,并确保在将其传递到视图之前填充该属性。

下拉列表用于从可能选项列表中选择值。您的模型不清楚,但假设您想要一个带有下拉列表的视图,以选择一个
项目和一个
函数,然后创建一个视图模型来表示要显示和编辑的内容()。注意:此示例基于上一个问题中的模型定义

public class ProjetoFuncionarioVM
{
  [Display(Name="Projeto")]
  public long SelectedProjeto { get; set; }
  [Display(Name="Funcionario")]
  public long SelectedFuncionario { get; set; }
  public SelectList ProjetoList { get; set; }
  public SelectList FuncionarioList { get; set; }
}
控制器

public ActionResult Edit()
{
  ProjetoFuncionarioVM model = new ProjetoFuncionarioVM();
  model.SelectedProjeto = // if you want to preselect one of the options
  ConfigureEditModel(model);
  return View(model);    
}

public ActionResult Edit(ProjetoFuncionarioVM model)
{
  if (ModelState.IsValid)
  {
    ConfigureEditModel(model); // reassign the select lists
    return View(model); // return the view to correct errors
  }
  // access properties of the view model, save and redirect
}

private void ConfigureEditModel(ProjetoFuncionarioVM model)
{
  List<Projeto> projeto = // get the collection of projeto objects from the database
  List<Funcionario> funcionario = // ditto for funcionario objects
  // Assign select lists
  model.ProjetoList = new SelectList(projeto, "id_Projeto", "nome_Projeto");
  model.FuncionarioList = new SelectList(funcionario, "id_funcionario", "nom_funcionario");
}
public ActionResult Edit()
{
projetoFunctionariovm model=新的projetoFunctionariovm();
model.SelectedProjeto=//如果要预选其中一个选项
ConfigureEditModel(模型);
返回视图(模型);
}
公共行动结果编辑(ProjetoFunsionarioVM模型)
{
if(ModelState.IsValid)
{
ConfigureEditModel(model);//重新分配选择列表
返回视图(模型);//返回视图以更正错误
}
//访问视图模型的属性、保存和重定向
}
私有void配置EditModel(ProjetoFunctionarioVM模型)
{
List projeto=//从数据库获取projeto对象的集合
List funcionario=//funcionario对象同上
//分配选择列表
model.ProjetoList=新选择列表(projeto,“id_projeto”,“nome_projeto”);
model.FuncionarioList=新选择列表(funcionario,“id\u funcionario”,“nom\u funcionario”);
}
看法

@model projetofunconariovm
@使用(Html.BeginForm())
{
@LabelFor(m=>m.SelectedProjeto)
@Html.DropDownListForFor(m=>m.SelectedProjeto,Model.ProjetoList,“请选择”)
@Html.ValidationMessageFor(m=>m.SelectedProjeto)
@LabelFor(m=>m.selectedFunctionario)
@Html.DropDownListForFor(m=>m.SelectedFuncionario,Model.FuncionarioList,“请选择”)
@Html.ValidationMessageFor(m=>m.selectedFunctionario)
}

有关这些方法的各种重载,请参阅和

我在何处找到配置编辑模型?你是什么意思?它只是添加到控制器中的私有方法。这只是意味着你只需要编写一次代码来创建你的选择列表(它们需要在GET方法中创建,如果你返回视图的话,在POST方法中再次创建)你就可以。。。太多了!你真的可以帮我
@model ProjetoFuncionarioVM

@using (Html.BeginForm())
{
  @Html.LabelFor(m => m.SelectedProjeto)
  @Html.DropDownListForFor(m => m.SelectedProjeto, Model.ProjetoList, "Please select")
  @Html.ValidationMessageFor(m => m.SelectedProjeto)
  @Html.LabelFor(m => m.SelectedFuncionario)
  @Html.DropDownListForFor(m => m.SelectedFuncionario, Model.FuncionarioList, "Please select")
  @Html.ValidationMessageFor(m => m.SelectedFuncionario)
  <input type="submit" value="Save" />
}