2017-07-04 72 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與他人分享知識。:) –

相關問題