2016-08-30 5 views
0

私は列挙可能なモデルを持つビューを持っています。私はオブジェクトのインスタンスの値でテキストボックスをバインドしようとしています。ここに私の見解があります。バインドされたテキストボックスを含む列挙型ビュー

@model IEnumerable<SeniorProjectMVC.Models.Cart> 

@{ 
    ViewBag.Title = "Index"; 
    Layout = "~/Views/Shared/_Layout.cshtml"; 
} 

<h3>Your cart</h3> 

@*<p> 
    @Html.ActionLink("Create New", "Create") 
</p>*@ 

<div class="row"> 
    <div class="large-2 columns"> 
     <h4> @Html.DisplayNameFor(model => model.Quantity)</h4> 
    </div> 
    <div class="large-4 columns"> 
     <h4>@Html.DisplayNameFor(model => model.Sku.Product.Name)</h4> 
    </div> 
    <div class="large-2 columns"> 
     <h4>@Html.DisplayNameFor(model => model.Sku.Product.Price)</h4> 
    </div> 
    <div class="large-1 columns"> 
     <h4>In stock</h4> 
    </div> 
    <div class="large-3 columns"> 

    </div> 
</div> 

@foreach (var item in Model) 
{ 
    <div class="row"> 
     <div class="large-2 columns"> 
      @Html.TextBox(item.Quantity.ToString()) 
     </div> 
     <div class="large-4 columns"> 
      @Html.Display(item.Sku.Product.Name) 
     </div> 
     <div class="large-2 columns"> 
      @(item.Sku.Product.Price.ToString("c")) 
     </div> 
     <div class="large-1 columns"> 
      @(item.Sku.Quantity > 0 ? "In Stock" : "Out of stock") 
     </div> 
     <div class="large-3 columns"> 
      @Html.ActionLink("Edit", "Edit", new { id = item.ID }, new { @class = "button primary" }) | 
      @Html.ActionLink("Details", "Details", new { id = item.ID }, new { @class = "button primary" }) | 
      @Html.ActionLink("Delete", "Delete", new { id = item.ID }, new { @class = "button primary" }) 
     </div> 
    </div> 
} 

私はに実行したように見える問題は量がテキストボックスに移入しないことで、それが表示されない、製品の名前のように思えます。商品名に価値があることはわかっていますが、表示されていません。また、値が変更された場合にこのコレクションをポストバックしたい場合は、変更されたカート内の数量を更新できるように、すべてのテキストボックス値を対応するIDでポストバックする正しい方法は何ですか?

+1

あなたはそれぞれの項目が 'Quantity'プロパティで有効な値を持っていると確信していますか? – Shyju

+0

はい、写真を投稿できます。価格は正しく拘束されているようですが、数量はテキストボックスに入力されておらず、各製品の名前も表示されません。 – ddeamaral

+0

dbContextから読み込むときに 'Include'を使う必要があるかもしれません。 – Shyju

答えて

0

したがって、いくつかの試行錯誤の後、間違ったHTMLヘルパーの過負荷を使用していたという問題が見つかりました。 @ Html.TextBox( "Quantity"、item.Quantity)は値を出力する正しい方法であり、名前については、私のために働いたことは@(item.Sku.Product.Name)を行うことです。

+0

コレクションをポストするために、 'foreach'ループを使うことはできません。 [この回答](http://stackoverflow.com/questions/30094047/html-table-to-ado-net-datatable/30094943#30094943)を参照してください(現在の実装では正しく動作しません'@ H​​tml.TextBoxFor(m => item.Quantity)' - 常に厳密に型付けされた 'HtmlHelper'メソッドを使用します) –

+0

現在のマークアップでは、各広告申込情報の数量とスキューのIDを投稿する方法はありません私のカートの中の私のコントローラーに? – ddeamaral

+0

いいえあなたの生成するhtmlを見てください - コレクションにバインドするために必要なインデクサーを持たない重複した 'name'属性を持っています(無効なhtmlである' id'属性を複製します) - 前のコメントのリンクを参照してください。 –

関連する問題