0

ご覧のとおり、テーブルからフィールドを取得するメソッドがあります。私の見解では、2 つのテキストボックスで検索を行います。

ClientID文字列なので、問題なく動作します。しかし、OrderIdIntであるため、 ToString() を使用しますが、それでも機能しません。

OrderId の 2 番目の IF 条件の書き方が間違っていますか? ご協力いただきありがとうございます

public ActionResult Search(string searchString, string searchOrder)
{  
    var user = from m in db.Order   
               select m;

    if (!String.IsNullOrEmpty(searchString))
    {
        user = user.Where(s => s.Order.ClientID.Contains(searchString));
    }         

    if (!String.IsNullOrEmpty(searchOrder))
    {
        user = user.Where(c => c.Order.OrderId.ToString().Contains(searchOrder));
    }

    return this.View("Order", "PrintView", user);
}
4

2 に答える 2

2

searchOrder整数に解析してから、次を使用する必要があるようです。

user = user.Where(c => c.Order.OrderId == targetOrderId);

他のことは別として、オーダー 2150 に一致するように "15"が本当に必要ですか? searchOrderそれは役に立たないように聞こえます。

于 2012-09-05T09:12:47.673 に答える
0

番号で検索するには、問題のメソッドを次のように変更します。

 public ActionResult PrintOrders(string searchString, int searchOrder = 0)
    {
        var user = from m in db.OrderDetails   
                   select m;

        if (!String.IsNullOrEmpty(searchString))
        {
            user = user.Where(s => s.Order.ClientID.Contains(searchString));               
        }

        if (searchOrder > 0)
        {
            user = user.Where(c => c.Order.OrderId == searchOrder);               
        }

        return this.ViewPdf("Order", "PrintView", user);
    }

別の方法は次のとおりです。

    public ActionResult PrintOrders(string searchString, string searchOrder)
    { 
        var user = from m in db.OrderDetails   
                   select m;

        if (!String.IsNullOrEmpty(searchString))
        {
            user = user.Where(s => s.Order.ClientID.Contains(searchString));               
        }

        int tmp = Int32.Parse(searchOrder);

        if (tmp != 0)
        {
            user = user.Where(c => c.Order.OrderId == tmp);
        }

        return this.ViewPdf("Order", "PrintView", user);
    }

ビューは次のようになります。

@using (Html.BeginForm("PrintOrders", "Historic", FormMethod.Get, new { target = "_blank" }))
{

   Search by Client ID : @Html.TextBox("searchString")

   Search by Order ID : @Html.TextBox("searchOrder")

  <input type="submit" value="Search" />
}
于 2012-09-05T10:38:47.323 に答える