2012-04-01 10 views
0

私はMS MVCで新しく、この問題があります。いくつかのチェックボックスでデータベースのデータをフィルタリングしようとしています。 私はMS MVCを使用しています。 LINQ to SQL、MS SQL Express。値のフィルタ条件としてクエリに接続するチェックボックス

<% using (Html.BeginForm()) 
     { %> 
     <fieldset> 
     <legend>Search filter</legend> 
     <fieldset style="width:130px;height:150px;float:left;margin-left:10px"> 
     <legend></legend> 
    <table> 
    <tr><td><%= Html.CheckBox("checkbox", false)%></td><td>Solar</td></tr> 
    <tr><td><%= Html.CheckBox("checkbox1", false)%></td><td>Water</td></tr> 
    <tr><td><%= Html.CheckBox("checkbox2", false)%></td><td>Biomas</td></tr> 
    <tr><td><%= Html.CheckBox("checkbox3", false)%></td><td>Other....</td></tr> 
    </table> 
    </fieldset> 

Controller.cs

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

     [AcceptVerbs(HttpVerbs.Post)] 
     public ActionResult Search(FormCollection formValues) 
     { 
      string value = formValues["checkbox"]; 
      string value2 = formValues["checkbox1"]; 
      string value3 = formValues["checkbox2"]; 
      string value4 = formValues["checkbox3"]; 

      var dataContext = new powerPlantModelDataContext(); 

      var solar = from q in dataContext.TypeDetails 
           where q.KindName.Equals(value.ToString()) 
           select q; 

      if (solar != null) { ViewData["solar"] = solar.ToList(); } 

      return View(); 
     } 

私の問題は、そのチェックボックスの値iが真または偽まったくチェックボックスを想定しないと私はカントであるview.aspx

<%foreach (RenewalSourcesWeb.Models.TypeDetail solar in (List<RenewalSourcesWeb.Models.TypeDetail>) ViewData["solar"]) {%> 
    <table> 

    <tr><td>Value1</td><td><%=solar.Description %></td></tr> 
    <tr><td>Value2</td><td><%=solar.KindName %></td></tr> 

    </table> 
    <%} %> 

でデータを収集し、ビューこの作品を作る。 誰かがいくつかの提案をしているなら、私は助けていただければ幸いです。複数のチェックボックスを解決する提案があれば、それも当てはまります。ここで

答えて

1

はあなたのためにいくつかの提案です:

1)あなたはMVCバージョン2または1を使用するためにあなたを強制的に要件を持っている場合を除き、Webフォームからの変更は、エンジン(この%のような<%構文を>表示)にRazorビューエンジン(@Syntax.LikeThis)。

2.)ViewDataではなく、厳密に型指定されたViewModelを使用します。

3.)検索するときは、POSTではなくGETを使用してフォームを送信してください。 POSTはデータを変更するとき、GETはデータを検索するとき(検索など)です。

@using (Html.BeginForm("Search", "Search", FormMethod.Get)) 
{ 
    ... 
+0

ご回答ありがとうございます。しかし、実際に私はmvc 2を使用することを余儀なくされました。私のプロジェクト全体は、剃刀のエンジンを使用せずに、より古いバージョンです。この新しい技術に慣れて、プロジェクト全体を再構築する時間がありません。 とにかく努力してくれてありがとう。 よろしくお願いします。George – Serv0

+0

@ user661597、あなたはまだ私の提案#2と#3を使用できます。私のかみそりの構文をwebformsの構文に置き換えてください。 – danludwig

関連する問題