問題タブ [updatemodel]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
asp.net-mvc - FormCollectionの配列のUpdateModel
FormCollectionに[0].propertyname、[1] .propertynameなどがある場合、モデルを更新するにはどうすればよいですか?
私がこれを行う場合:
更新されません。
または個別に更新を試す:
まだ喜びはありません。
元のエンティティでICollectionを試行します(つまり、シーケンシャル[0]、[1]など)
私もうまくいかないと思います。誰かが私の間違いを見つけることができますか?新しいValueProviderを作成する必要がありますか?
linq-to-sql - Edit Post アクション - respository.save() がデータを保存するのはなぜですか?
私は少し混乱しています。以下が機能する理由がわかりません。
このサンプルは、Scott Guthrie の NerdDinner ウォークスルーから取得したもので、dinnerRepository.Save() は次のように定義されています。
また、 dinnerRepository.GetDinner(id) は次のように定義されています。
つまり、db NerdDinnerDataContext はどのようにしてディナー オブジェクトを保存することを「認識する」のでしょうか?
私のLinq To SQLの理解には穴があるに違いありませんが、それを特定できれば吹き飛ばされます。さて、dinner オブジェクトには ID がありますが、その ID を持つ特定のレコードに送信する変更があることを db に伝えるにはどうすればよいでしょうか?
私はそれを見ることができません。ワールドカップに違いない…
DataContext オブジェクトの db が、GetDinner メソッド呼び出しを使用して取得したディナー オブジェクトへの参照を保持しているとしか思えません。しかし...すべてが少し「魔法」のように感じます
アンドリュー
visual-studio-2008 - 更新ウィザード (Entity Framework) - VSS 2008 がビューを更新しない。手動で更新する必要がありますか?
私は VSS 2008 を使用しており、SQL Server 2008 データベースから Entity Framework モデルを構築しました。すべてがうまくいきました。ビューを更新して新しい列を含め、DB からモデル全体を更新しようとしましたが、ビューの更新された列が表示されません。
問題を確認するために EDMX を XML として開いたところ、警告が表示されました... 生成中にエラーが見つかりました: 警告 6002: テーブル/ビュー 'Internet.dbo.XYZ' には主キーが定義されていません。キーは推測され、定義は読み取り専用のテーブル/ビューとして作成されました。
私の質問は、このビューから新しい列を強制的にモデルに追加するにはどうすればよいかということです。EDMX を手動で更新して、この列をプロパティとしてビュー エンティティに含めることはできますか? ただし、これは面倒な作業になる可能性があり、おそらく修正が保証されているわけではありません。このビューを削除してから再度追加する必要がありますが、オブジェクトを再追加しようとしたときに許可されなかったという誰かの投稿を読みましたか?
ありがとう。
.net - UpdateModel メソッドがどのように FormCollection 値をインスタンスに入力するのでしょうか?
この例では、UpdateModel メソッドが person インスタンスを formValues で埋める方法を教えてください。UpdateModel は formValues で人を埋めるときにリフレクションを使用すると思いますが、updatemodel は formValues パラメータをどのようにキャッチしますか?
nhibernate - asp mvcとnhibernateを使用して参照(ドロップダウンリスト)でモデルを効率的に更新する方法
nhibernateとaspmvc2を使用してWebアプリケーション(アプリケーションポートフォリオ)の開発を開始しました。
アプリケーションのカテゴリを適切に変更するのにいくつかの問題があります。
これが私のモデルです:
私のviewModel:
私のフォーム:
私のコントローラーのアクション:
新しいカテゴリを割り当てることはできますが、別のカテゴリに変更すると、次のメッセージが表示されます。
Core.Model.Categoryのインスタンスの識別子が2から3に変更されました
これは、defaultmodelbinderが、新しいカテゴリに新しい新しいキーを割り当てるのではなく、割り当てられたカテゴリのキーを更新しているためと思われます。
すべての参照でエンティティを更新する正しい方法は何ですか?
カスタムビューモデルを使用し、それをコントローラーにバインドしてから、ドメインモデルにマップすることもできます。しかし、それでは作業が多すぎるのではないかと心配しています(最終的に、アプリケーションモデルには約100のプロパティ、30の参照、5〜6のリストがあります)。
この場合、Automapperは既存のドメインモデルを更新するのに役立ちますか?
この種の更新をどのように処理していますか?
c# - TryUpdateModel が Prefix と IncludeProperties で機能しない
こんにちは、UserName と Role という 2 つのプロパティを持つ User というエンティティがあります (これは、Role という別のエンティティへの参照です)。ポストバックされたフォームから UserName と RoleID を更新しようとしています。ポストバック アクション内に、次のコードがあります。
ただし、これらのいずれも Role.RoleID プロパティを更新しません。次のことを試してみると:
RoleID は更新されますが、RoleName プロパティも検証されます。そのため、どのプロパティを更新するかをより具体的にしようとしていますが、最初の例はどれも機能しません。
誰かが助けてくれれば幸いです。ありがとう
asp.net-mvc - HttpPost で ModelState が無効な場合、ASP.NET MVC は更新されたモデルを自動バインドします。
私は ASP.NET MVC2 アプリに取り組んでいます。私は、MVC が ModelState とモデル バインディングに関係して舞台裏で行っている、非常に驚くべき、しかし驚くべきことに気付きました。大量のデータを持つ ViewModel があります。一部のフィールドはフォームの一部であり、他のフィールドは単に UI の一部です。HttpPost では、私の Action メソッドは、モデル全体をバインドしようとする DefaultModelBinder を使用しますが、フォームの一部であったフィールドのみが正常に逆シリアル化され、その他はすべて null のままです。それはそれでいいし、理解できる。ModelState が無効な場合は、データベースからモデルを更新し、それらの特定のフォーム フィールドをバインドしてから、同じ編集ビューに戻って関連する ModelState 検証エラーを表示する必要があります。
ここで私の驚きと好奇心が生まれます。フォーム フィールドを更新されたモデルにバインドするUpdateModel()
には、またはを呼び出してTryUpdateModel<>()
、新しく更新されたモデルを渡す必要があると想定していました。例えば:
refreshedModel
しかし、私が見つけたのは、 を呼び出さずに単にビューに戻った場合TryUpdateModel<>()
、更新されたモデルが投稿されたフォーム フィールドの値に自動的にバインドされていたことです!! したがって、TryUpdateModel<>()
ここでは必要ありません。
私がそれを理解できる唯一の方法は、ModelState が無効な状態にあるため、更新されたモデルでビューを返すと、「MVC レンダリング エンジン」が ModelState エラーをループし、それらのプロパティ値を更新された値にバインドすることです。モデル。それは単に素晴らしいです!しかし、私はこの仮定の証明が必要です。これに関するドキュメントはウェブ上のどこにも見つかりません。なぜ/どのようにこの素晴らしい自動バインド動作が発生しているかという私の仮説を誰かが確認できますか、および/またはそれがなぜ/どのように発生しているかについて教えてくれますか?
asp.net-mvc - MVCUpdateModelとサブクラスと基本クラス
実行時に取得されるサブクラスにUpdateModelメソッドを使用することを検討しています。誰かがそれの完全なハッシュを作成しているかどうか、および/または私がしようとしていることを明らかにすることができれば素晴らしいでしょう。することは可能です。
一連の部分ビューの検証を制御するために、一般的なアクションを使用しています。部分ビューごとに特定のアクションを実行しないようにしようとしています。
各部分ビューには、基本モデルから派生した一意のモデルがあります。
アクションでFormCollectionを使用して、送信されたフォーム要素とその値を取得しています。これには、ビューがリクエストを検証するために使用する必要があるモデルのタイプが含まれます。この例では、これがセキュリティに与える影響を無視してください。私はそれらを認識しており、これは内部的な唯一の概念実証です。
これが、コントローラーに渡されたmodelTypeに基づいてサブクラスを返すために使用しているコードです。
StateModelClassFactoryメソッドの戻り型は基本クラスであるため、実際にはサブクラスを返していますが、UpdateModelメソッドで使用されるモデルバインダーは、基本クラス内の値に対してのみバインドします。
この問題を解決する方法について何かアイデアはありますか?
アップデート:
カスタマーモデルバインダーを作成しました。
そして、新しいモデルバインダーを正しい基本クラスに割り当てて、内部で何が起こっているかを確認します。
モデルバインダーをデバッグしてbindingContextを調べると、Modelプロパティは正しいサブクラスを再プリセットしますが、ModelTypeプロパティは基本クラスのプロパティです。BindModelメソッド内でModelTypeを変更することを検討する必要がありますか?もしそうなら、これを行う方法についてのポインタは、ModelTypeのセッターが冗長になっているようです。また、サブクラスのSomeDatePropertyが実際にはPropertyMetadataプロパティにあることに気づきました。...私が望むように動作するのに非常に近いようです。
asp.net - ASP.NET MVC 2 で複雑なモデルを更新しますか?
複雑なモデルを更新するにはどうすればよいですか? 私は次のビューを持っています:
そして、モデルオブジェクトで UpdataModel を呼び出すだけで、いつものように更新しようとしました: UpdateModel(week); しかし、それはうまくいきませんでした。そのため、複雑なモデルで各プロパティを個別に更新する必要があることについて何かを読んで、それを自分の状況に適応させようとしました。コントローラーでの私の試みは次のとおりです。
しかし、それもうまくいきませんでした。プロパティが文字列の場合は機能するように見えますが、これは int であり、コンパイラは、TModel として使用するには参照型でなければならないと文句を言います。
これが進むべき道かどうかはわかりません。このような複雑な型モデルを更新する方法を理解する必要があるだけです。これはあまり珍しいことではないので、標準的な方法があるはずですが、わかりません...
何か案は?
アップデート:
以下の作品:
アクション方法:
意見:
しかし、更新はこのように手動で行う必要があり、不必要に複雑に思えます。Phil Haack による投稿 ( http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx )を見つけました。 、 このような:
つまり、単に Week をメソッドのパラメーターとして受け取るだけです (Haacks の例では、UpdateModel を呼び出す必要さえないようです。View をオブジェクトにバインドするだけで十分なようです。データベース...しかし、それは私にとってはうまくいきません.返される週オブジェクトは、ビューに送信されたものと同じではないようです.タスクのコレクションにアイテムがありません.
では、なぜこれが機能しないのでしょうか。
wpf - WPFのTextBox(LostFocus、LostKeyboardFocusなど)からモデルを更新するには、どのイベントを使用する必要がありますか?WPFでイベントの優先順位を設定するにはどうすればよいですか?
たくさんのTextBoxと、Save、SaveAsなどのいくつかのボタンがあるアプリケーションがあります。
ユーザーがTextBoxを編集するとき、データベースで範囲を確認し、範囲を検証して、データベースを更新する必要があります。ユーザーが入力した値にエラーがある場合は、TextBoxがフォーカスを失うことを許可しないでください。
私はこれにLostFocusイベントを使用していましたが、最近アプリケーションのバグを発見するまでは正常に機能していました。
バグ:ユーザーがTextBoxの値を編集してから、[保存]ボタンをクリックします。LostFocusイベントが呼び出されないため、データベースが更新されません:(
ここで私の質問は、データベースを更新するためにTextBoxでどのイベントを使用する必要があるかです。TextChangedイベントを試しましたが、すべての文字に対して検証され、アプリケーションが遅くなります。この種のアプリケーションに適したイベントを選択するのに混乱しています。
注:**ボタンは別のUserControlにあります!
編集1:ボタンのクリックにいくつかのコマンドがアタッチされています。これらのコマンドはLostFocusの前に実行されます!! 優先順位を設定したり、添付の動作やコマンドのようなものをLostFocusの後に実行することはできますか?
編集2:いくつかのコマンドを無効にしてアプリケーションをデバッグしていましたが、場合によっては、DelegateCommandがLostFocusの前に実行されるため、それを避けたいと思います。どうすればそれについて行くことができますか?開発中に、純粋なMVVMアプリケーションを開発することは不可能だと感じたので、少しコードビハインドを使用しています。