親愛的,我有一個簡單的問題,我找不到答案。我創建了一個在url中傳遞不同數據操作值的列表視圖。我目前的網址是這樣的:http://localhost/App/Product/List?categoryId=2&countryId=us。通過url傳遞值 - 數據操作
我有來自不同類別和國家的產品,有誰知道我必須通過哪些價值才能展示來自所有國家的產品或來自所有類別的產品而不是特定的產品?像/列表的categoryId =「」 & countryId =「」
一位同事告訴我,執行以下操作:? 我認爲你應該使用空整型(INT?)作爲一種類型的類別ID參數:
public ActionResult List(int? categoryid, int? page, string countryId)
{
var products = null;
if (categoryid.HasValue && !string.IsNullOrEmpty(countryId)) {
products = ProductRepository.FindCategoryProducts(categoryid, countryId).AsPagination(page.GetValueOrDefault(1), 20);
} else if (categoryid.HasValue == false && string.IsNullOrEmpty(countryId)) {
products = ProductRepository.GetAllProducts();
} else {
/// check the other cases here...
return View(products);
}
}
但似乎如果我只有兩個參數是可能的,但有很多parameteres我會有很多if - else如果顯示所有可能性。
這是過濾數據或其他選項存在的唯一方法嗎?
任何幫助將不勝感激。 brgds
更新!!:
嗨傑森,非常感謝你。我有以下控制器:
public ActionResult List(int categoryid, int? page, string countryId)
{
var products = ProductRepository.FindCategoryProducts(categoryid, countryId).AsPagination(page.GetValueOrDefault(1), 20);
return View(products);
}
Productrepository:
public IQueryable<Product> FindCategoryProducts(int categoryId, string countryId)
{
return from product in db.product
where product.CategoryId == categoryId
&& product.CountryId == countryId
orderby product.CreatedOn
select product;
}
那麼我可以通過URL產品/列表的categoryId = 2 & countryId =我們。但如果我想檢索所有產品,無論哪個國家/地區喜歡使用可空字符串,我都會收到錯誤。 這就是爲什麼這位同事建議我創建if/elseif語句 - 考慮到所有參數的可能性,但如果作爲一個例子我有8個參數,它似乎是一個很長的聲明。
謝謝!
取決於您如何設置數據庫。如果你有產品X,你是否有每個國家的單獨產品ID?或者你有一個產品ID,然後分別存儲每個國家/地區的信息?沒有更多的細節,沒有人可以爲你解答。這就像是說你從一本書裏得到了一個頁面,想知道它的一個字是什麼,但不知道這本書的標題或頁面是什麼。 – 2011-04-04 00:58:12
我發佈了更多的信息,你可以看到下面,我想知道如何創建一個使用窗體來操作多個參數的數據的列表視圖。像電子商務網站一樣,根據類別,最大最低價格,屬性等進行列表視圖。brgds! – 2011-04-04 01:10:06