1

ASP MVC ドロップダウン リストでデフォルト値が使用されている場合、すべての値を返すか、その特定の検索基準を単純に無視するコードが必要です。

以下は、ビューとコントローラーにあるコードです。「%」が機能していないように見えるので、その仕事をする別のキーワード/演算子はありますか?

意見:

        <form method="post">
          <select name="Table" title="Table" style="font-size:8pt;">
            <option value="%">--Table Name--</option>
            <option value="AgentContEd">CE</option>
            <option value="AgentProductTraining">PT</option>
          </select>
          <select name="IssueType" style="font-size:8pt;">
            <option value="%">--Issue Type--</option>
            <option value="W">Warning</option>
            <option value="E">Error</option>
          </select>
          <select name="Status" style="font-size:8pt;">
            <option value="%">--Status Type--</option>
            <option value="O">Open</option>
            <option value="U">Under Review</option>
          </select>


        <input type="image" src="@Url.Content("~/Content/Images/Filter.bmp")" alt="Filter" style="padding-top: 0px;" />
        <a href="#" style="padding-left: 30px;"></a>
        </form>

コントローラ:

    public ViewResult Index(FormCollection dropDownSelection)
    {
        //security
        //if (!Security.IsViewer(User)) return RedirectToAction("Message", "Home", new { id = 2 });

        //if (ViewBag.Level == 0) return RedirectToAction("Message", "Home", new { id = 2 });

        string table = dropDownSelection["Table"];
        string issue = dropDownSelection["IssueType"];
        string status = dropDownSelection["Status"];

        var followUpItem = from follow in db.FollowUpItems
                           where follow.TableName.Equals(table) &&
                                 follow.IssueType.Equals(issue) &&
                                 follow.Status.Equals(status)
                           select follow;

        return View(followUpItem.ToList());
    }
4

2 に答える 2

2

SqlMethods.Likeどちらかまたは単にString.Containsメソッドを使用できます。(またはその他の SQL ワイルドカードString.Containsを使用し続けると問題になることに注意してください。)%

したがって、3 つのバリエーションは次のようになります。

var followUpItem = from follow in db.FollowUpItems
                   where SqlMethods.Like(follow.TableName, table) &&
                         follow.IssueType.Contains(issue) &&
                         follow.Status.Equals(status)
                   select follow;
于 2013-01-22T21:24:09.833 に答える
1

私はこれをコンパイルしていませんが、次のようなものが必要だと思います:

 public ViewResult Index(FormCollection dropDownSelection)
    {
        //security
        //if (!Security.IsViewer(User)) return RedirectToAction("Message", "Home", new { id = 2 });

        //if (ViewBag.Level == 0) return RedirectToAction("Message", "Home", new { id = 2 });

        string table = dropDownSelection["Table"];
        string issue = dropDownSelection["IssueType"];
        string status = dropDownSelection["Status"];

        var followUpItem = from follow in db.FollowUpItems
                   where (follow.TableName.Equals(table) || table.Equals("%")) &&
                         (follow.IssueType.Equals(issue) || issue.Equals("%")) &&
                         (follow.Status.Equals(status) || status.Equals("%"))
                   select follow;

        return View(followUpItem.ToList());
    }
于 2013-01-22T21:24:24.380 に答える