【发布时间】:2017-06-25 20:55:50
【问题描述】:
我正在尝试将 id 传递给我的购物篮,但我不断收到错误消息
参数字典包含参数“id”的空条目 方法的不可空类型“System.Int32” 'System.Web.Mvc.ActionResult AddToBasket(Int32, Int32)' 在 'UberUnlock.Controllers.BasketController'。可选参数必须 是引用类型、可为空的类型或被声明为可选项 范围。参数名称:参数
我不知道出了什么问题,当我只引用一个模型时,我的代码工作正常
@model UberUnlock.Product
在视图顶部,但每当我尝试通过 ModelView 添加两个模型时
@model UberUnlock.ViewModel.MultipleModelInOneView
我不断收到上述错误,谢谢。
这是我的查看代码
@model UberUnlock.ViewModel.MultipleModelInOneView
<dd>
@using (Html.BeginForm("AddToBasket", "Basket"))
{
@Html.AntiForgeryToken()
@Html.HiddenFor(model => model.Products.ID)
@Html.DropDownList("quantity", Enumerable.Range(1, 10).Select(i => new SelectListItem { Text = i.ToString(), Value = i.ToString() }))
<input type="submit" class="btn btn-primary btn-default margin" value="Add to Basket">
}
</dd>
<p>
@Html.ActionLink("Edit", "Edit", new { id = Model.Products.ID }) |
@Html.ActionLink("Back to List", "Index")
</p>
这是我的 ViewModel 代码
using UberUnlock.Models;
namespace UberUnlock.ViewModel
{
public class MultipleModelInOneView
{
public Order Orders { get; set; }
public Product Products { get; set; }
}
}
我的篮子控制器代码
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult AddToBasket(int id, int quantity)
{
Basket basket = Basket.GetBasket();
basket.AddToBasket(id, quantity);
return RedirectToAction("Index");
}
这是一个 ProductController(这是我的视图的控制器)
public ActionResult Details(int? id)
{
var model = new MultipleModelInOneView();
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
model.Products = db.Products.Find(id);
if (model.Products == null)
{
return HttpNotFound();
}
return View(model);
}
【问题讨论】:
-
在尝试访问
MultipleModelnOneView.Product.ID之前,您是否将MultipleModelnOneView.Product初始化为实例? -
您没有将值 id 和数量传递给控制器
-
我已经添加了我的视图控制器。这是我必须初始化 MultipleModelInOneView 的地方吗
-
你仍然没有传递 id。检查我在视图代码中传递 Id 和数量的 Html.BeginForm 代码。\
标签: c# asp.net asp.net-mvc razor asp.net-mvc-5