iT邦幫忙

1

@foreach 詢問

在ASP.NET MVC 使用 c# 用@foreach 可以抓到不同資料表的資料嗎?
如下程式碼↓

@foreach (var item in Model.tOrders.Where(m => m.fUId == UserName))
          {
          .
          ..
          ...
          }

有辦法抓出Model.tOrders的資料 可是我還要抓出Model.tOrders2的資料
請問該怎麼做比較好?

看更多先前的討論...收起先前的討論...
powerc iT邦新手 4 級 ‧ 2021-08-26 13:48:52 檢舉
你可能需要更詳細的說明你的問題,Model.tOrders2什麼時候會用到? 會怎麼使用?
目前有用ViewModel可是好像一直抓不到order2的資料表 一直說錯誤訊息 類似再說 ![https://ithelp.ithome.com.tw/upload/images/20210826/20140491eY6NxjyBCU.png](https://ithelp.ithome.com.tw/upload/images/20210826/20140491eY6NxjyBCU.png)
你的Model.tOrders2.Where(m => m.fUId == UserName) 看來是NULL值

你可以用偵錯模式看看Model.tOrders2有沒有值
有值就代表LINQ WHERE 找出來是NULL
Yaowen iT邦新手 4 級 ‧ 2021-08-26 15:00:41 檢舉
加.FirstOrDefault()
Model.tOrders2.Where(m => m.fUId == UserName) .FirstOrDefault();
他應該不會要預設值吧? 而且好像也會是NULL
Yaowen iT邦新手 4 級 ‧ 2021-08-26 15:08:53 檢舉
我通常是不會在View那邊下 Linq 判斷 會在Controller 就處理好了
所以沒碰過那樣的問題...
感謝各位,大家的指導找出問題了,我應該好好反省MVC的控制流程,控制器沒有寫好程式碼所以才出錯
1
Yaowen
iT邦新手 4 級 ‧ 2021-08-26 14:02:41

1.可以使用ViewModel

public class ViewModel{

        public List<orders> orders { get; set; }
   

        public List<orders2> orders2 { get; set; }
}

2.把資料丟在ViewBag

       var Order2 = new Get_Order2();
       ViewBag.Order2List = Order2;
看更多先前的回應...收起先前的回應...

目前有用ViewModel可是好像一直抓不到order2的資料表 一直說錯誤訊息 類似再說 https://ithelp.ithome.com.tw/upload/images/20210826/20140491eY6NxjyBCU.png

Yaowen iT邦新手 4 級 ‧ 2021-08-26 14:46:46 檢舉

你的Controller View() 丟什麼東西...

Yaowen iT邦新手 4 級 ‧ 2021-08-26 14:48:56 檢舉

你要貼 Controller + Model + View 的Code 我才能知道錯在哪裡...

Yaowen iT邦新手 4 級 ‧ 2021-08-26 14:54:30 檢舉

你Controller 有類似這樣丟?

Models2.ViewModel ViewModel = new Models2.ViewModel
{
orders=o,
orders2=o2
}
return View(ViewModel);

感謝各位,大家的指導找出問題了,我應該好好反省MVC的控制流程,控制器沒有寫好程式碼所以才出錯

0
qaz11226633
iT邦新手 5 級 ‧ 2021-08-26 14:40:13

你要先懂FOREACH在做什麼的!

    public class Test
    {
        public int FUId { get; set; }
    }
    public void TestFunction()
    {
        Test tOrders = new Test();
        Test tOrders2 = new Test();
        List<Test> tests = new List<Test>
        {
            tOrders,tOrders2
        };

        foreach (Test item in tests)
        {
                //TODO
        }
    }

建議你先打你的結構打上來,才有辦法更好的幫你
VAR 很好用 但要很熟你的資料結構再用

----------------更新--------------

看起來你的
Model.tOrders2.Where(m => m.fUId == UserName)
是NULL喔

可以使用偵錯模式看看Model.tOrders2有沒有值
有值就代表LINQ WHERE 找出來是NULL
(對 Razor 也能下中斷點)

感謝各位,大家的指導找出問題了,我應該好好反省MVC的控制流程,控制器沒有寫好程式碼所以才出錯

不明
【**此則訊息已被站方移除**】

我要發表回答

立即登入回答