我遇到了以下問題:控制器參數不成爲空
我有一個asp.net的MVC 5控制器引用類型作爲參數:
[Route("")]
[HttpGet]
public ActionResult GetFeeds(Location location)
{
if (location == null)
{
// init location or smth
}
// Do smth with location
return new EmptyResult();
}
你會發現,我正在使用AttributeRouting。此操作的名稱沒有其他方法。
但是 - 這是我的位置類:
public class Location : ILocation
{
public DbGeography Coordinates { get; set; }
public double Latitude { get; set; }
public double Longitude { get; set; }
}
這裏沒有什麼特別(接口定義了所有這些屬性)。
如果我(實際使用PowerShell),並通過類似於訪問控制器動作:
http://localhost:2000/Feed?latitude=23.1&longitude=37
寄託都工作正常,但如果我使用
http://localhost:2000/Feed
位置參數不null(這是一個新的位置,默認值),這是我想要的行爲:(。
有沒有人有一個想法,爲什麼發生這種情況?
在此先感謝
活頁夾按設計工作 - 它實例化一個位置對象,並使用默認值填充其值,除了提供覆蓋值的位置(您不在第二個示例中)。它不會僅僅因爲你的路由沒有提供值而創建你的'Location'對象的null實例。 – 48klocs
@ChristopherKellner - 由於「模型聯編程序的工作原理」而不可能出現。看看我的答案中的鏈接以獲得更多解釋。 – Tommy