参数字典包含参数“Id”的空条目

时间:2014-03-14 09:44:23

标签: asp.net-mvc c#-4.0

我是MVC的新手,所以请帮我摆脱这个。我想在DB中检索NameofBike。我正在使用LINQ,但那里有问题。 我的Action

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 Index(Int32,System.String)'中   'AdventureCycle.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>

3 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

基本上,POST表单中缺少您的Id参数。

在行上的Index操作方法上放置一个断点:

 `var viewModel = Bikes....` 

并在debug中运行该项目。当点击断点时,将鼠标悬停在int Id & string Name参数上,您将看到实际传递给您方法的内容。

答案 2 :(得分:0)

您需要通过UrlHelper.Action方法生成网址,以便它们与您的路由配置相匹配。您也可以通过LinkExtensions.ActionLink创建链接。

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