2014-03-14 101 views
0

我是MVC中的新手,所以請幫助我擺脫這一點。我想在DB中檢索NameofBike。我正在使用LINQ,但在那裏出了問題。 我Action參數字典包含參數'Id'的空條目

public ActionResult Index(int Id, string Name) 
{ 
    // Create our view model 
    var viewModel = BikesDB.ProductSubcategories 
     .Where(m => m.NameofBike == Name && m.ProductSubcategoryID == Id); 

    return this.View(viewModel); 
} 

視圖模型:

public class Bike 
{ 
    public int Id { get; set; } 
    public String Name { get; set; } 
} 

public class CategoriesIndexViewModel 
{ 
    public int NumberOfModel { get; set; } 
    public List<string> NameofBike { get; set; } 
    public List<Bike> Bikes { get; set; } 
} 

當調試它拋出這樣的錯誤:

參數字典包含參數無效項 非的 'ID' - 可空類型'System.Int32'方法 'System.Web.Mvc.ActionResult索引(Int32,System.String)'in 'A dventureCycle.Controllers.BikeController」。可選參數 必須是引用類型,可爲空類型,或者聲明爲 可選參數。

這裏的導航:

<ul id="navlist"> 
      <li> 
       <a href="@Url.Content("~/Bike/")">Home</a> 
       <ul> 
        <li> 
         <a href="@Url.Content("~/Bike/Categories/1?name=Mountain Bikes&class=image")">Mountain Bikes</a> 
        </li> 
        <li> 
         <a href="@Url.Content("~/Bike/Categories/2?name=Road Bikes&class=image")">Road Bikes</a> 
        </li> 
        <li> 
         <a href="@Url.Content("~/Bike/Categories/3?name=Touring Bikes&class=image")">Touring Bikes</a> 
        </li> 
       </ul> 
      </li> 
+0

如何調用'Index'動作?你是否將'Id'傳遞給它? – Zabavsky

+0

我不明白你說的是什麼意思?我是否已經通過上面的'Id'? –

+0

是的。你期望'Index'行動中的'Id'參數,你通過它嗎?你如何導航到'索引'行動? – Zabavsky

回答

0

基本上你的ID參數從表單POST失蹤。

將斷點您Index操作方法就行了:

`var viewModel = Bikes....` 

並運行調試項目。當命中斷點時,將鼠標懸停在參數int Id & string Name上,您將看到實際傳遞給您的方法的內容。

0

您需要通過UrlHelper.Action方法生成網址,以便它們符合您的路由配置。您也可以通過LinkExtensions.ActionLink創建鏈接。

@Html.ActionLink("Home", "Index", "Bike", 
    new { Id = /* categoryId here */, Name = /* name of a bike */ }) 
相關問題