我是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>
答案 0 :(得分:0)
我认为你的ID值包含一些空值。尝试这个链接它可能会帮助你
MVC 3 The parameters dictionary contains a null entry for parameter 'id' of non-nullable type
答案 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 */ })