簡體   English   中英

為什么輸入模型在asp.net核心操作中為空

[英]Why is Input Model null in asp.net core action

我正在向我的 API 提交訂單。

通常,它工作正常。 但有時, inputModel 為空。

為什么會出現這種情況?

public async Task<Order> NewAsync(OrderInput input)

當 InputModel 與傳遞給它的實際參數不匹配時,輸入模型在控制器中將為空。

需要明確的是:控制器不關心是否向它傳遞了額外的參數,它會簡單地忽略它們。

但是如果有一個“必需”參數,比如:

public int TypeId{get;set;}

如果沒有提供,那么整個輸入模型將為空。

如果 TypeId 真的是可選的,那么讓它可以為空,然后輸入模型將它設置為空。

public int? TypeId{get;set;} 

總結一下:控制器已為 InputModel 傳遞了一個 null 值,而 InputModel 不允許為 null。 結果是整個 inputModel 在處理時將為空。

這可能會令人沮喪,因為沒有拋出異常,你得到的只是一個空模型。

解決方法是將瀏覽器中的 post 參數與模型進行比較,並找出哪些參數不應該為 null。 這種情況發生在我身上的頻率比我願意承認的要多得多,而且每一次,我都必須停下來再次弄清楚這一點,所以我想我會繼續在這里張貼這個以提醒自己下次。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM