0

我有一个包含DropDownList大量项目的 MVC 网页。每个项目都是我的一个对象Database,代表磁盘上的一个文件。

我的对象类:

namespace CapturesMVC.Models

public class Capture : IEquatable<Capture>
{
    public int id { get; set; }
    [Display(Name = "File Name")]
    public string fileName { get; set; }

    [Display(Name = "Browser")]
    public string browser { get; set; }

    [Display(Name = "Mobile")]
    public string mobile { get; set; }

    [Display(Name = "Protocol")]
    public string protocol_site { get; set; }

    public string family { get; set; }

    public sealed override bool Equals(object other)
    {
        return Equals(other as Capture);
    }

    public bool Equals(Capture other)
    {
        if (other == null)
        {
            return false;
        }
        else
        {
            return this.protocol_site == other.protocol_site;
        }
    }

    public override int GetHashCode()
    {
        return protocol_site.GetHashCode();
    }
}

CaptureDBContext 类:

namespace CapturesMVC.Models

public class CaptureDBContext : DbContext
{
    public DbSet<Capture> Captures { get; set; }
}

这是我的控制器:

[HttpPost]
public ActionResult Index(string File)
{
    var list = db.Captures.Where(x => x.protocol== File).ToArray();
    ViewBag.Files = list;
    return View();
}

索引.cshtml:

@using (Html.BeginForm())
{ 
    <div>   
        @Html.DropDownList("File", new SelectList(ViewBag.Files, "protocol_site", "protocol_site"), "Select webmail site", new { style = "vertical-align:middle;" })
        <button type="submit">Select</button>
    </div>
}
</body>

从我的项目中选择一个项目DropDownList并点击按钮后,将Index执行该操作并返回与我的对象属性之一匹配的对象列表以及我想在列表中显示在我的网页上的该列表,但目前的情况是该列表是插入我的DropDownList.

4

2 回答 2

0

你想实现级联 DropDownList

在 msdn 代码或c-sharpcorner 上检查此示例 'Cascading DropDownList in ASP.Net MVC'

于 2013-11-11T11:04:59.303 回答
0

问题是您将对象放在ViewBagDropdownlist 从中获取其值的同一属性中。

您可以制作 aList并将其放入您的ViewBag:

List<Capture> list = db.Captures.Where(x => x.protocol== File).ToList();
ViewBag.data = list;

并枚举这些并在您的视图中显示一些 html(例如在无序列表中)。但是您必须先将其转换回列表:

@using Namespace.Capture
...
<ul>
foreach (var item in (ViewBag.data as List<Capture>))
{
    <li>@item.Property</li>
}
</ul>

ViewBag 是 C# 4 动态类型。您需要从中转换实体以以类型安全的方式使用它们。

但我建议使用将列表作为属性的视图模型,并将其从控制器操作发送到视图。

于 2013-11-11T11:16:00.477 回答