2013-04-18 58 views
4

我想打電話給我的控制器的操作:使用此URL參數字典包含參數爲非可空類型的「testId」無效項「System.Int32」

http://localhost:5345/ManageTest/Details/5

[Authorize] 
public class ManageTestController : Controller 
{ 

public ActionResult Details(int testId) 
    { 

對於'MAMAdmin.Controllers.ManageTestController'中的方法'System.Web.Mvc.ActionResult Details(Int32)',參數字典包含一個空的條目,用於參數'testId'的非空值類型'System.Int32'。可選參數必須是引用類型,可爲空類型,或者聲明爲可選參數。 參數名:參數

回答

9

這看起來像你試圖映射到默認路由,這就是:

RouteTable.Routes.MapRoute(
      name: "Default", 
      url: "{controller}/{action}/{id}", 
      defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }); 

爲了做到這一點,在你ActionResult更改參數名稱是id

public ActionResult Details(int id) 

否則你必須使用的網址:

http://localhost:5345/ManageTest/Details?testId=5 
+0

回到堆棧:) –

+1

@DarrenDavies哈哈,我有一週的工作伴侶,所以我沒有使用它(除了登錄Fanatic徽章):) – mattytommo

+1

謝謝!最後一個答案不是「你沒有在http請求中傳遞參數」。這個答案應該得到所有其他類似答案的累積upvotes,因爲它實際上包含了正確的實現。 – Luc

相關問題