0

DropDownListアイテムがいっぱいのMVC Webページがあります。Databaseすべてのアイテムは、ディスク上のファイルを表すmy のオブジェクトです。

私のオブジェクトクラス:

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>

my からアイテムを選択しDropDownListてボタンを押すと、Indexアクションが実行され、オブジェクト プロパティの 1 つに一致するオブジェクトのリストと、リスト内の Web ページに表示したいこのリストが返されますが、現在の状況では、このリストは私のに挿入されましたDropDownList

4

2 に答える 2

0

Cascading DropDownList を実装したい

msdnコードまたはc-sharpcornerでこの例「ASP.Net MVCのCascading DropDownList」を確認してください

于 2013-11-11T11:04:59.303 に答える
0

ViewBag問題は、ドロップダウンリストが値を取得するのと同じプロパティにオブジェクトを配置することです。

Listを作成して、それを に入れることができます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 に答える