Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/332.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
C# mvc3下拉列表绑定_C#_Asp.net Mvc 3_Binding_Html.dropdownlistfor - Fatal编程技术网

C# mvc3下拉列表绑定

C# mvc3下拉列表绑定,c#,asp.net-mvc-3,binding,html.dropdownlistfor,C#,Asp.net Mvc 3,Binding,Html.dropdownlistfor,我是MVC3新手,正在尝试学习一些东西。使用Razor视图引擎。mysql数据库。我有一张桌子,放着公司(companyID、companyName等)。我有一个具有相同属性的模型: public class CompanyModel{ public int companyID; public string companyName; ...... .... } 我想创建一个下拉列表,其中包含公司,显示公司名称,当我选择一个项目时,我需要能够访问公司ID。我可以查

我是MVC3新手,正在尝试学习一些东西。使用Razor视图引擎。mysql数据库。我有一张桌子,放着公司(companyID、companyName等)。我有一个具有相同属性的模型:

public class CompanyModel{
    public int companyID;
    public string companyName;
    ......
    ....
}
我想创建一个下拉列表,其中包含公司,显示公司名称,当我选择一个项目时,我需要能够访问公司ID。我可以查询该表,并在公司列表中显示所有行:

List<Company> companies = new List<Company>();
companies = getCompanies();
上市公司=新上市公司();
companys=getcompanys();
但是我不知道如何将这个列表与dropdownlist绑定,以及如何在从我的控制器调用post方法后获得所选的值


任何帮助都将不胜感激。

您可以使用视图模型:

public class MyViewModel
{
    [DisplayName("Company")]
    public int CompanyId { get; set; }
    public IEnumerable<SelectListItem> Companies { get; set; }
}
公共类MyViewModel
{
[显示名称(“公司”)]
public int CompanyId{get;set;}
公共IEnumerable公司{get;set;}
}
然后让控制器动作实例化、填充此视图模型并将其传递给视图:

public class CompaniesController: Controller
{
    public ActionResult Index()
    {
        List<Company> companies = getCompanies();

        var model = new MyViewModel();
        model.Companies = companies.Select(x => new SelectListItem
        {
            Value = x.companyID.ToString(),
            Text = x.companyName
        });
        return View(model);
    }

    [HttpPost]
    public ActionResult Index(MyViewModel model)
    {
        // model.CompanyId will contain the selected value here

        return Content(
            string.Format("You have selected company id: {0}", model.CompanyId)
        );
    }
}
公共类公司控制器:控制器
{
公共行动结果索引()
{
上市公司=获取公司();
var模型=新的MyViewModel();
model.companys=companys.Select(x=>newselectListItem
{
Value=x.companyID.ToString(),
Text=x.companyName
});
返回视图(模型);
}
[HttpPost]
公共行动结果索引(MyViewModel)
{
//model.CompanyId将在此处包含所选值
返回内容(
Format(“您已选择公司id:{0}”,model.CompanyId)
);
}
}
最后是一个强类型视图,您可以在其中呈现包含下拉列表的HTML表单:

@model MyViewModel
@using (Html.BeginForm())
{
    @Html.LabelFor(x => x.CompanyId)
    @Html.DropDownListFor(x => x.CompanyId, Model.Companies)
    <button type="submit">OK</button>
}
@model MyViewModel
@使用(Html.BeginForm())
{
@LabelFor(x=>x.CompanyId)
@DropDownListFor(x=>x.CompanyId,Model.companys)
好啊
}
非常感谢:)效果很好;)