[asp.net-mvc]从下拉列表在 asp.net mvc 中保存选定的项

发布时间: 2017/3/25 1:20:34
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我想保存所选的物料从我 dropdownlist MSSQL 表在哪里从另一个 MSSQL 表填充菜单中的菜单。但每当我运行我的项目我收到编译错误

CS1502︰ 与 'System.Web.Mvc.SelectList.SelectList System.Collections.IEnumerable、 字符串 (字符串)' 最匹配的重载的方法具有一些无效的参数

这里是我的代码,

视图

@using (Html.BeginForm("BoxManager", "Home"))
{
    @Html.ValidationSummary(true)
    <div class="editor-label">
        <strong>Full Name</strong>
    </div>
    <div class="editor-field">
        @Html.DropDownListFor(a => a.Boxes.clientname, new SelectList(Model.Clients, "fullname", "fullname"))
        @Html.ValidationMessageFor(a => a.Boxes.clientname)
    </div>
    <p><input type="submit" class="btn btn-info" value="Add" /></p>
}

模型

public class BoxManagement
{
    public BoxInfo Boxes { get; set; }
    public IEnumerable<BoxInfo> BoxCollection { get; set; }
    public ClientInfo Clients { get; set; }
}

控制器

public ActionResult BoxManager()
{
     return View();
}

[HttpPost]
public ActionResult BoxManager(BoxManagement BoxModel)
{
     if (ModelState.IsValid)
            {
                var AddBox = BoxModel.Boxes;
                db.BoxInfoes.Add(AddBox);
                db.SaveChanges();
                return RedirectToAction("BoxPanel");
            }
            return View(BoxModel.Boxes);
}

在这里我做错什么了吗?如何可以保存在所选的下拉列表项目我 BoxInfo 模型?非常需要这种帮助。感谢。

解决方法 1:

之所以在这里是你传递一个对象类型 ClientInfo 而不是所需的类型,这是 IEnumerable<> 。要传递到你下拉线以下︰

new SelectList(Model.Clients, "fullname", "fullname")

Clients是类型的 ClientInfo 不是 IEnumerable 。你需要改变它的东西代表 IEnumerable 类型。

一个例子就是︰

Model.BoxCollection

这是 IEnumerable 根据您的模型。

更新︰

这应该是您的模型代码︰

public class BoxManagement
{
    public BoxInfo Boxes { get; set; }
    public IEnumerable<BoxInfo> BoxCollection { get; set; }
    public IEnumerable<ClientInfo> Clients { get; set; }
}

这应该是你控制器代码︰

var ClientCollection = db.ClientsInfo.Select(..conditions..).ToList();
Model.Clients = ClientCollection;
return View(Model);

所以基本上,只需绑定 Clients 对象与您的查询到 IEnumerable 并将该模型传递到您的视图。这是所有需要。

官方微信
官方QQ群
31647020