2017-07-04 115 views
2

我正在开发一个简单的项目。以下是代码。事情是我无法从视图中获取所有信息到控制器。因此,我已在Homecontroller中拥有图书ID,名称和价格(来自单独的Productcontroller),并且我也可以查看它,并且我想在发布帖子请求时发布图书数量。所以,当我尝试发布帖子请求并对其进行调试时,我只能看到数量,而对于图书ID,名称和价格,我看到的值为空。如何从MVC视图获取数据到控制器

我不确定发生了什么问题。任何帮助将非常感激。 谢谢!

1.Product.cs

public class Product 
    { 
     public int ProductID { get; set; } 
     public string ProductName { get; set; } 
     public decimal ProductPrice { get; set; } 
     public int Quantity { get; set; } 
    } 

2.Cart.cshtml

@model DAL.Models.Product 
@{ 
    ViewBag.Title = "Purchase"; 
} 

@ViewBag.bookName 
<h2>Purchase</h2> 

<div class="row"> 
    <div class="col-md-3"></div> 
    <div class="col-md-6"> 
     @using (Html.BeginForm("Cart", "Home", FormMethod.Post)) 
     {   
      <div class="panel panel-primary"> 

       <div class="panel-heading">Purchase Book</div> 
       <div class="panel-body"> 
        <div> 
         <dl class="dl-horizontal"> 
          <dt> 
           @Html.DisplayNameFor(model => model.ProductName) 
          </dt> 

          <dd> 
           @Html.DisplayFor(model => model.ProductName) 
          </dd> 

          <dt> 
           @Html.DisplayNameFor(model => model.ProductPrice) 
          </dt> 

          <dd> 
           @Html.DisplayFor(model => model.ProductPrice) 
          </dd> 

         </dl> 
        </div> 
        @Html.LabelFor(model => model.Quantity, htmlAttributes: new { @class = "control-label col-md-2" }) 
        <div class="col-md-10">      
         @Html.EditorFor(model => model.Quantity, new { htmlAttributes = new { @class = "form-control" } }) 
         @Html.ValidationMessageFor(model => model.Quantity, "", new { @class = "text-danger" }) 
        </div><br /> 

        <div class="col-md-10"> 
         <input type="submit" value="Submit" class="btn btn-default"/> 
        </div> 
       </div> 
      </div> 
     } 
    </div> 
    <div class="col-md-3"></div> 
</div> 

以下是截图:

This is the screenshot of what I'm trying to do

回答

1

只有编辑值将被纳入POST(你正在使用@ Html.EditorFor等)。要在POST中包含其他值,只需使用@ Html.HiddenFor()助手。

例如:

@Html.HiddenFor(model => model.ProductID) 
@Html.HiddenFor(model => model.ProductName) 
@Html.HiddenFor(model => model.ProductPrice) 

这些将被传递回和可用在控制器中。

+0

真棒!非常感谢。这工作。我感谢您的帮助。 – Marshall

1

嗨马歇尔我希望你有从道格·克努森的解决方案上面的回答,所以在这里我想告诉你的方式,Why DisplayFor does not post values to Action Method?

简短的回答:DisplayFor不会呈现的输入字段属性,而editorfor和hiddenfor呈现输入字段。这是你没有在帖子中获得价值的原因。

希望它能帮助你更多地理解。

感谢

KARTHIK

+1

嗨Karthik,感谢您花时间看我的帖子。感谢您向我提供详细信息的帮助。它有助于。 – Marshall

+0

我的荣幸Marshall.Happy与他人分享知识。:) –

相关问题