我是堆栈溢出的新手。我开始创建一个MVC应用程序而不是使用Map.Route我使用绑定属性来传入id。下面显示了每个类/组件的错误和代码。
参数字典包含参数的空条目 ' restaurantId'非可空类型的System.Int32'方法 ' System.Web.Mvc.ActionResult Index(Int32)'在 ' OdeToFood.Controllers.ResturantReviewsController&#39 ;.可选的 参数必须是引用类型,可空类型或声明为 一个可选参数。
模型
public class ResturantReview
{
public int Id { get; set; }
public int Rating { get; set; }
public string Body { get; set; }
public string ReviewerName { get; set; }
public int ResturantId { get; set; }
}
Controller
public class ResturantReviewsController : Controller
{
private OdeToFoodDb _db = new OdeToFoodDb();
public ActionResult Index([Bind(Prefix = "id")] int restaurantId)
{
var restaurant = _db.Resturants.Find(restaurantId);
if (restaurant != null)
{
return View(restaurant);
}
return HttpNotFound();
}
[HttpGet]
public ActionResult Create(int restaurantId)
{
return View();
}
[HttpPost]
public ActionResult Create(ResturantReview review)
{
if (ModelState.IsValid)
{
_db.Reviews.Add(review);
_db.SaveChanges();
return RedirectToAction("Index", new { id = review.ResturantId });
}
return View(review);
}
protected override void Dispose(bool disposing)
{
if (disposing)
{
_db.Dispose();
}
base.Dispose(disposing);
}
查看
@model OdeToFood.Models.Resturant
@{
ViewBag.Title = "Index";
}
<h2>Index</h2>
@Html.Partial("View", Model.Reviews)
<p>
@Html.ActionLink("Create New", "Create", new { restaurantId = Model.Id })
</p>
答案 0 :(得分:2)
从看到你有行动
public ActionResult Index([Bind(Prefix = "id")] int restaurantId)
删除绑定属性
public ActionResult Index(int id)
绑定前缀表示您将POST / Get参数作为id.restaurantId。并且您希望捕获默认路由,它将从URL读取id,如ResturantReviews / Index / 2