2016-08-29 27 views
0

ASP.NET MVC 5ビューからコントローラ全体にオブジェクトを渡す方法はありますか?これは私の状況です:ASP.NET MVC 5のビューからコントローラにオブジェクト全体を渡す

  • 私は
  • DBテーブルからすべての行を表示するビューを持つビューのモデルは
  • IEnumerableをされ、それは足場UPDATEビュー
  • につながるデータだ後に各行がリンクを持っています

オブジェクト全体をUpdateコントローラメソッドに渡す方法はありますか?最初は古いデータでフォーム入力を埋めるでしょうか?以下のような何か:

@Html.Action("Update me!", "Update", new { objectFromModelList }) 

そして、そのようなコントローラで

public ActionResult Update(MyType parameter) 
    { 
     return View(parameter); 
    } 

か何か。助けてください、私はこれに新しいです、どこでも答えを見つけることができません。

+1

ビュー全体を投稿できますか? –

答えて

4

あなたのオブジェクトは大きすぎる可能性があります!クエリ文字列には、ブラウザに基づいて渡す​​ことができるデータの量に制限があります。一意のid値(レコードの)を渡し、アクションメソッドのdbからレコード全体を取得し、それをビューに渡すことを検討する必要があります。

@foreach(var item in SomeCollection) 
{ 
    <tr> 
    <td> @Html.Action("Update me!", "Update", new { id = item.Id }) </td> 
    </tr> 
} 

とアクションメソッドで

public ActionResult Update(int id) 
{ 
    var item = GetItemFromId(id); 
    return View(item); 
} 

GetItemFromId方法を想定すると、一意のID値から方法/ビューモデルを返します。基本的には、dbテーブル/リポジトリからこの一意のIDを使用してレコード全体を取得します。

+1

ああ私の前に!ハハ良い仕事! –

+0

まあ、私はそれらの乱雑なURLを避けるつもりですので、ええ...ありがとうございます。 – dzenesiz

2

あなたの更新ビューは、IEnumerableをタイプではないと仮定すると...

あなたはちょうどあなたが更新ビューに送信するレコードの IDを渡す必要が

...

ようなので、 :

@Html.Action("Update me!", "Update", new { id = item.ID }) 

その後、あなたの更新アクションは、次のようになります。

[HttpGet] 
public ActionResult Update(int id) 
{ 
    var parameter = db/* connection string variable */.TableName.Find(id); 
    return View(parameter); 
} 

あなたのリンクは適切に動作するはずです。

希望すると便利です。

+0

助けてください。これありがとう。 – dzenesiz

+1

@dzenesizよろしくお願いします!幸せなコーディング! –

関連する問題