ASP.NET MVC 框架可以將 URL 參數(shù)值自動(dòng)映射到操作方法的參數(shù)值。 默認(rèn)情況下,如果操作方法采用參數(shù),則 MVC 框架將檢查傳入的請(qǐng)求數(shù)據(jù)并確定該請(qǐng)求是否包含同名的 HTTP 請(qǐng)求值。 如果包含,則該請(qǐng)求值將自動(dòng)傳遞給操作方法。
下面的示例演示上面示例的變體。 在此變體中,假定 id 參數(shù)映射到名稱也為 id 的請(qǐng)求值。 由于此自動(dòng)映射的緣故,操作方法不必包括用于從請(qǐng)求中獲取參數(shù)值的代碼,因此,參數(shù)值更易于使用。
public ResultAction Detail(int id){ ViewData["DetailInfo"] = id; return View();}
您也可以將參數(shù)值作為 URL 的一部分而不是作為查詢字符串值嵌入。 例如,您可以使用 /Products/Detail/3 之類(lèi)的 URL,而不是使用包含查詢字符串的 URL,如 /Products/Detail?id=3。 默認(rèn)路由映射規(guī)則的格式為 /{controller}/{action}/{id}。 如果 URL 中控制器和操作名稱后面存在 URL 子路徑,則會(huì)將該子路徑視為名為 id 的參數(shù),并自動(dòng)將其作為參數(shù)值傳遞給操作方法。
MVC 框架還支持操作方法的可選參數(shù)。 MVC 框架中的可選形參是使用控制器操作方法的可以為 null 類(lèi)型的實(shí)參處理的。 例如,如果方法可以采用日期作為查詢字符串的一部分,但是您希望在缺少查詢字符串參數(shù)的情況下默認(rèn)值為當(dāng)天日期,則可以使用與以下示例中的代碼相似的代碼:
public ActionResult ShowArticles(DateTime? date){ if(!date.HasValue) { date = DateTime.Now; } // ...}
如果請(qǐng)求包括日期參數(shù)的值,則該值將傳遞給 ShowArticles 方法。 如果請(qǐng)求不包含此形參的值,則實(shí)參為 null,并且控制器可以采用所需的任何操作以處理缺少的形參。