2017-06-24 18 views
0

私はよく知っているWebformsからMVCに移行しました。ASP.NET MVC 5/Entity Frameworkでデータをバインドする方法は?

私は基本的なことを持っていて、今はデータベースで作業しようとしています。ビューにデータを送信することはできますが、どのように編集して戻すことができますか?

私はこのような多くの例を見ている:

public ActionResult Update(MyObject myObject) 
{ 
    //do database EFW here 
} 

私はあなたがmyObjectに、ウェブフォーム(ビュー)からデータを取得する方法を動作することはできません。私は賢明な何もしていませんが、私はいくつかの例を続けてきましたが、この仕組みがどのように機能するか説明していません。

私は@Html.BeginFormとヘルパー関数(Html.TextBoxFor)などを使用してフォーム用にフォームフィールドを作成しています。問題は、編集したデータを元に戻すことができないため、データを更新できることです。私は右のコントローラのアクションを打つ。

私のフォームaは、ブートストラップダイアログ内の部分的な表示です。

UPDATE

さて、私はようやくとして(私はまだそれを保存することはできませんので、しかし、それは、キーフィールドが取り込まフォーム上だけのものを持っていない、戻って私のアクションメソッド内のオブジェクトを持っています私はそれがどれであるかわからないので、更新)。

私が取得し、表示

var diary = new mySQLEntities().Diaries.Single(d => d.DRefno == Id);

にこのオブジェクトを送信し、すべてが良いですが、その後、私がやりたいことは、この、または類似した何かをある

public ActionResult DiaryItemUpdate(mymvc.Diary Diary) 
    {   
     mySQLEntities db = new mySQLEntities(); 

     db.Diaries.Add(Diary); 

     db.SaveChanges(); 

     return RedirectToAction("Index", "Home"); 
    } 

[Bind(Include = ...)]はしていません私が戻ってきたものでさえ、すべてのプロパティを削除するだけです。

私が見ているすべての例は、私がやっているのと同じことをするようですが、うまくいきません。

これは簡単だと思いましたが、そうではありません。私はEFをしばらく見て、このまさにその理由のためにそれを捨てました。それは開発が容易になると言います。それは私にとってもっと難しくしています。私はなぜ私が長い間Webフォームにこだわったのかを知ることができます。

+0

正確にここで説明しています(https://docs.microsoft.com/en-us/aspnet/mvc/overview/getting-started/introduction/examining-the-edit-methods-and-edit-view)。 )。それはあなたを助けるはずです。また、そのサイトでMVCスキルを磨くために時間を費やしてください。 –

+0

ありがとう。私はもう少し詳しく知りました。アップデート – devmvcnew

+0

を参照してください。あなたの質問は、基本的にはどうすればMVCとEFを使用しますか?私はあなたがここであなたの答えを見つけるとは思わない、これは特定の質問のためです。 MVC、EFなどの実装方法には、さまざまなアプローチがあります。私の個人的な意見が必要な場合は、この多彩なガイドは長いですが、すべてがベストプラクティスとパターンを使用しています。 https://app.pluralsight。com/library/courses/aspdotnetcore-efcore-bootstrap-angular-web-app/ –

答えて

0

渡すプロパティは、フォームに戻す必要がある場合は、フォームでインスタンス化する必要があります。あなたは、非表示のフォーム要素としてオブジェクトのIDを追加する必要があります。これはあなたがビューに送られたオブジェクトのIDが戻って掲載されることを保証します

@Html.HiddenFor(model => model.ID) 

+0

興味深いです。私は今4/5のビデオを見てきましたが、誰もそれをしていません。 10または20の隠れた値(悪い)の例がある場合はどうなりますか?私は、EFがどうやって自分のことをして、EFを一本化するのかが気になっていません。 – devmvcnew

+0

この答えは、OPの道を捨てるだろう。 '@ H​​tml.HiddenFor(model => model.ID)'を使う点は、モデルのID(ビューに渡されたオブジェクトのように)がページに表示されないためです。あなたが実行する例は、viewModelの手法を使ってデータを隠す可能性があります。データがフォームに届かないこともあります。 –

+2

Adam、 '@ Html.HiddenFor(model => model.ID)'を使用するポイントは実際にはページに表示されないようになっていますが、ViewModel経由でコントローラに返されるので、そのIdでデータベースから実際のオブジェクトを取得し、値を更新します。 – ColinM

関連する問題