2017-05-18 3 views
2

テーブル(マシン)からのレコードがアップロードされ、それぞれをビューで編集できるビューを作成しようとしています。ASP .NETコア:編集する複数の項目のグリッドを表示

これは私のGetメソッドです:

public async Task<IActionResult> Test() 
     { 

      return View(await _context.Machines.Include(t => t.MachineTypes).Include(p => p.Suppliers).AsNoTracking().ToListAsync()); 
     } 

私は必要なもののために非常にシンプル。私はテーブルのマシンのリストを取得していると関連するテーブル:MachineTypesとサプライヤーを含むので、この情報はビューで編集する必要があります。

今、私はかなり迷っています。残念です。

私は、使用するモデルを定義開始しました:

@model IEnumerable<Application.Models.Machine> 

質問をはIEnumerableをを使用することが正しいです[回答]? UNIによって 回答:はい

そして、いくつかの実施例で見られるように、私はコントローラとアクションを示すためにHtml.BeginFormを使用するように:

@using (Html.BeginForm("Machines","TestPost")) 

追記:がPostメソッドが定義されていませんまだ私は今

には任意の名前を使用しています次に、リストのすべての要素を読み取るために、反復が来る:

@Html.ValidationSummary(true) 
    @for(int i = 0; i < Model.Count() ; i++) 

質問[回答済み]:この部分では、 'Model.Machine.Count()'が正しいかどうかわかりません。 によって返信uni:正しいです。 'Machine'を指定する必要はありません。

繰り返しの中で、まずMachineName(MchName)を表示するようにコードする方法はわかりません。私はこれをやっている:

@for(int i = 0; i < Model.Count() ; i++) 
    { 
     <tr> 
      <td> 
       @Html.HiddenFor(modelItem => modelItem.Machine[i].Id) 
       @Html.DisplayNameFor(model => model.MchName) 
      </td> 
     </tr> 
    } 

[回答]質問を:この部分では:私はHiddenForを使用する必要がある理由

@Html.HiddenFor(modelItem => modelItem.Machine[i].Id) 

は、私は知らないが、私は別の例でそれを見ましたフォーラムで。 uni:これはコントローラに値を送信する多くの方法の1つです。

質問[回答]:また、この部分ユニによって

@Html.HiddenFor(modelItem => modelItem.Machine[i].Id) 

回答:'マシン' の

継続前と同じ、含める必要はありません。ビュー

反復部分については、「マシン」を含める必要はないため...

[新規]質問:Machineテーブルから希望のアイテムをどのように呼び出す必要がありますか?

@for(int i = 0; i < Model.Count() ; i++) 
    { 
     <tr> 
      <td> 
      @Html.HiddenFor(modelItem => i.Id) 
      @Html.DisplayNameFor(modelItem => model.MchName) 
      </td> 
     </tr> 

    } 

これはどちらも間違っているが、私は、反復内部のアイテムを表示する方法を理解しようとしていた。

私はこれを持っています。私はIEnumerableを使用しているので、for()の代わりに@foreachを使用すると最も良いでしょう。

おかげ

答えて

1

質問:はIEnumerableをを使用することが正しいですか?

回答:はい

質問:IEnumerableをを行います。この部分では、私は「Model.Machine.Countは()」正しいか、よく、私はエラーを取得していますかどうかわからないんだけどMachineの定義は含まれていません。私はこのようにそれを置けばそれで十分です?:@For(値int i = 0;私< Model.Count();私は++)

回答:あなたは既に保存されているマシン(IEnumerable<Application.Models.Machine>)のコレクションを持っているあなたモデルModel.Countは()各マシン・モデルは、子機のオブジェクトを持っていないと行くための正しい方法だろうので

質問: @ Html.HiddenFor(modelItem => modelItem.Machine [I] .ID )私はHiddenForを使う必要があるのか​​分からないので、私はフォーラムの別の例でそれを見た。

回答: HTTPポストを行うときには、コントローラのアクションに値を送る方法がたくさんあります。隠しフィールドはそれを行う方法です。この場合、フォーム提出の一環としてマシンのIDを送信しています。

質問: @ Html.HiddenFor(modelItem => modelItem.Machine [i] .Id)は同じエラーを表示しています。IEnumerableにはMachineの定義が含まれていません。私はテーブルを言及すべきである厳しい。

回答:これは、前述のforループのCount()呼び出しに関する回答と同じです。

希望すると便利です。

+0

ありがとうございました!この後も疑問はなく、まだ.netコアでこれを行う方法を学んでいます。以下の疑問が追加されましたが、私はgoogleで探し続けます。 @univ –

+0

Npがお手伝いします!あなたの問題を解決した場合は、答えをupvoteしてください:) あなたの新しい質問に答えるには、forループの代わりにforeachを使うべきであることに同意します – univ

+0

私は試しましたが、まだ15の評判はありません。私はそのマークに達すると戻ってそれをやります! –

関連する問題