MVC4将模型值从视图(for-each)传递给控制器

时间:2014-07-22 02:37:54

标签: asp.net-mvc-4

您好亲爱的我试图将我的模型值从视图传递给控制器​​。当我试图这样做时,我在控制器中只收到空值我的视图如下 我也使用过@html.hadden,但在点击按钮后仍然只在控制器中收到空值。请有人帮帮我,告诉我这个问题的解决方案。

我的观点是,我正在尝试向卖方传递价值:

@model IEnumerable<onlinebookstore.entityframwork.book>

@using (Html.BeginForm("AddToCart", "ShopingCart", FormMethod.Post))
{
    foreach (var item in Model)
    {
        <img src="@Url.Content(item.book_img)" alt="Image" width="170px"; height="230px" />
        <br />
        @Html.DisplayFor(modelItem => item.book_name)
        <br />
        <label>Author:</label>
        @Html.DisplayFor(modelItem => item.author)
        <br />
        <label>Pk.</label>@Html.DisplayFor(modelItem => item.price, new { id = "price" })&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp
        @Html.ActionLink("For Detail..", "Detail", "Book", new { id = item.inventory_id }, null)
        <br />
        <input type="submit" class="btnreg" id="btnaddcart" value="Add to Basket"/>
        <br />
    }
} 

我的控制器,我试图从视图接收值,这里我只收到空值

[HttpPost]
public ActionResult AddToCart(book model)
{
    var cartitem = 
            db.shoping_cart_item
                .FirstOrDefault(u => u.inventory_id == model.inventory_id);

    if (cartitem == null && Session["userid"] != null)
    {
        cartitem = new shoping_cart_item();
        cartitem.inventory_id = model.inventory_id;
        cartitem.price = Convert.ToDecimal(model.price.ToString());
        db.shoping_cart_item.Add(cartitem);
    }
    return View();
}

我的模特(书)

public string inventory_id { get; set; }
public string book_name { get; set; }
public string author { get; set; }
public string book_type { get; set; }
public Nullable<int> no_book { get; set; }
public Nullable<decimal> price { get; set; }
public string book_img { get; set; }
public string book_description { get; set; }

请帮助我如何在控制器

中使用for-each循环传递模型值

2 个答案:

答案 0 :(得分:1)

您的表单没有输入。你没有提交任何东西。试试@ Html.TexboxFor()或其他一些助手。

答案 1 :(得分:0)

那么这个问题的解决方法是什么,我可以在视图中显示我的所有值,然后在按钮上单击模型的所有值将传递给控制器​​。

我认为你做错了。

您的视图循环显示onlinebookstore.entityframwork.book列表,以便在一个大表单中显示每个内容的详细信息和一个按钮。提交时,所有可以提交的输入都将被发布(最好是一组书籍)。但是在您的控制器上,您只是收到一个onlinebookstore.entityframwork.book

的实例

您可能希望首先通过创建循环来重新考虑您的视图,然后在其中包含@using (Html.BeginForm("AddToCart", "ShopingCart", FormMethod.Post))标记。这会为每个onlinebookstore.entityframwork.book创建一个表单。只需对单个页面上的多表单进行必要的调整即可。