1

モデルを使用できないビューで、フィルターの形式を再設定する必要があります(テーブルを作成するために、モデルを使用してオブジェクトの IEnumerable を取得しています)。

ユーザーが自分で入力する必要がないように、フィルター入力を入力するにはどうすればよいですか?

ASP.NET MVC3 を使用しています。

より明確なグラフィックの例:

public ViewResult Consulta(string dominio, string cliente, DateTime?
desde, DateTime? hasta, int? estado, string origen, int? reclamoid)
{
    var reclamos = db.Reclamos.Where(/*Apply filters, etc*/);
    return View(reclamos.ToList());
}

ご覧のとおり、これらはフィルターごとに ViewBag を使用するには多すぎるため、複数の方法でこれを行う方法があるかどうか疑問に思います。

前もって感謝します。

4

2 に答える 2

3

Mattytommo には、それを行うための新しい複雑なモデルを作成する方法の例が 1 つありますが、他に 2 つの方法があります。

1 つ目は、より定義された複雑なモデルを作成することです。これにより、より定義されたモデルが得られます。これにはフィルターとサイロ化された結果が含まれます。

 public class MyFilterModel
 {
     public string Dominio { get; set; } 
     public string Cliente { get; set; } 
     public DateTime? Desde { get; set; } 
     public int? Estado { get; set; } 
     public string Origen { get; set; } 
     public int? Reclamoid { get; set; }  
 }

 public class MyViewModel
 {
      public MyFilterModel Filters {get;set;}
      public IEnumerable<DataRow> Results {get;set;}
 }

もう 1 つのオプションは、既存のモデルを維持し、ViewBag または ViewData を使用してフィルター モデルを渡すことです。

 public class MyFilterModel
 {
     public string Dominio { get; set; } 
     public string Cliente { get; set; } 
     public DateTime? Desde { get; set; } 
     public int? Estado { get; set; } 
     public string Origen { get; set; } 
     public int? Reclamoid { get; set; }  
 }

コントローラーで

 public ViewResult Consulta(MyFilterModel filters)  
 {  
      ViewBag.Filters = filters;
     var reclamos = db.Reclamos.Where(/*Apply filters, etc*/);  
     return View(reclamos.ToList());  
 } 

あなたの見解では

 @model MyViewModel
 @{
      MyFilterModel filters = ViewBag.Filters as MyFilterModel;
 }

 @Html.EditorFor(m => filters.Dominio) 
于 2012-04-12T18:03:46.970 に答える