問題タブ [asp.net-mvc-viewmodel]

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.

0 投票する
1 に答える
670 参照

asp.net-mvc-4 - Mvc4 でページ PostBack の後に null 値を返す

Invoice Create Viewを作成したい。次のように私のviewModel:

次のようにメソッドを取得します。

私の見解は次のとおりです。

投稿方法は次のとおりです。

私の問題は、Post メソッドの請求書変数で表示されているボタンをクリックすると null になることです。どうすれば修正できますか?前もって感謝します。

0 投票する
1 に答える
327 参照

c# - ViewModel へのバインド時に WebGrid が更新されない

MVC 3 とカミソリ エンジンを使用してサイトを作成しています。更新されていないソースとして ViewModel を持つ WebGrid があります。奇妙なことに、プロジェクトを再コンパイルしたときにのみ更新され、ajax 呼び出しまたは少なくともページの更新で更新したかったのです。

0 投票する
1 に答える
123 参照

asp.net - ASP.NET Razor ViewModel プロパティがどこかで変更されています

私は非常に単純なコントローラー+ビューを持っています

これは、MVC4 アプリケーションで使用する最も単純なコントローラーとビューですが、奇妙なことを行います: @Html.EditorFor(model => model.UserName) で作成されTextBoxを、UserNameの代わりのモデル

私はそれをデバッグし、そこにはいつものようにUserNameUserIdの正しい値があります。ビュー内に@Model.UserNameを 2 回追加して、正しくレンダリングされるかどうかを確認したこともわかります。はい、ID ではなく UserName が出力されます。

UserName プロパティへの参照も確認しましたが、それを変更するものは見つかりませんでした。私の質問は、コードをどこで変更できるか、またはそれを見つけたらどうすればよいか、何か考えがありますか?

この1つのアクションのこの1つのコントローラーでのみ発生します(〜25コントローラーと〜200アクションのうち)

ありがとうございました

0 投票する
1 に答える
3096 参照

c# - ViewModel、ASP.net MVC で「Model」型のプロパティを定義するのはいいの?

ASP.net MVC での ViewModel の使用に関するいくつかの投稿を読み、MV-VM パターンの「ViewModel」とは異なることに気付きました。

ViewModel は、モデルが View から直接アクセスされるのを避けるために使用されますが、ViewModel に (モデル レイヤーで定義された) タイプのプロパティを持つことは良い方法ですか? つまり、最終的にはModel 名前空間を ViewModel に含める必要があります。

例えば

モデル
1. YesNoTBDValue エンティティ/POCO クラス

2 Projectエンティティで使用される YesNoTBDValue クラス(モデル自体で定義)

モデルの表示
1. ProjectEditViewModel

コントローラー
プロジェクト コントローラー (ビュー モデルの新しいインスタンスを作成する編集アクションで)


YesNoTBDValues リストから DropDownList を表示し、選択したアイテムを IsAvailableSelectedItemId に保持するビュー

適切にコーディングする方法を教えてください。

繰り返しの質問: ViewModel にモデルの名前空間を含める必要がありますか? 私の例では、モデルでYesNoTBDValueが定義されており、それを使用するためにモデルの名前空間を使用しています

/別のアプローチ/

既存のアプローチに満足できず、Microsoft Nuget Gallery のソース コードを github からダウンロードしたところ、VIEWMODEL内で MODELS を使用したことがないことに気づきました。上記のコードを少し変更して(ViewModel から Model の参照を削除するため)、うまく機能していることがわかりました。

ここに私の変更があります:

機種 変更なし、そのまま

モデルの表示
1. YesNoTBDValue クラスのレプリカを作成します。YesNoTBDValueViewModel と言います

2 ProjectEditViewModelでこの ViewModel を使用し、Model 参照を削除します

コントローラーこれらの値を設定する方法を変更します。(編集アクションで)

そして、これらの変更後に発見され、それもうまく機能しています。このモデルとビューモデルは互いに完全に分離されているため、この2番目のアプローチが気に入っています。この質問は、さらに議論するために開いたままにしておきます。

ここで何か不足している場合は、光を投げてください。

0 投票する
5 に答える
1615 参照

c# - MVC プロジェクトの外部でデータベース アクセス コードをリファクタリングし、ビューモデルを内部に保持するにはどうすればよいですか?

次のフォルダーを含む asp.net-mvc Web サイトがあります。

  • コントローラー
  • スクリプト
  • ビュー
  • ビューモデル
  • モデル
  • ドメインモデル

私は今、このビジネス ロジックとデータベース アクセス コードとデータの多くに別の .net アプリ (Windows コンソール アプリなので Web ではありません) にアクセスしたいので、MVC プロジェクトの外にあるものをできるだけ削除するようにリファクタリングしています。コードをこの他のソリューションと共有できるように、ソリューション内の他のプロジェクトに。

主な問題が 2 つあります。

  1. 私の主な問題は、ViewModel を生成するコードを配置する場所を見つけるのに苦労していることです。これは、コンソール アプリが同じデータを必要とする電子メールを送信するときに、このコードの多くをコンソール アプリで再利用したいからです。見る。

  2. もう 1 つの主な問題は、ビューモデルをインスタンス化する関数の多くが一連のデータベース アクセス コードで始まる場合に、内部にビューモデルを保持しながら、データベース アクセス コードを MVC プロジェクトから移動する方法を理解するのに苦労していることです。

これまでの詳細と私のプロセスの一部を次に示します。

ステップ 1 - DomainModel を別のプロジェクトに移動 - 成功

そのため、DomainModel プロジェクトの移動は簡単でした (これは、いくつかのビジネス ロジックが上にある多くの生のオブジェクトであり、それについては何も問題がありませんでした)。

ステップ 2 - コントローラーを間引く - 成功

コントローラーをできる限り間引いて、ビジネス ロジックや複雑なデータ アクセス ロジックを Models フォルダーに移動しました。モデル フォルダーを MVC プロジェクトの外に移動しようとすると、いくつかのことが壊れました。

ステップ 3 - Models フォルダーを MVC プロジェクトの外に移動しようとする - 苦労

コントローラーを間引いて、モデル クラスに移動し、ビューに戻す ViewModel を返すさまざまなコントローラー アクションをいくつか用意しました。このようなもの(私のコントローラークラスで):

したがって、Model フォルダー内のファイルは ViewModel クラスに依存しています。複数の異なるコントローラーで使用される GenerateAppDetailViewModel() 関数を集中管理したいと考えています。また、私のコンソール アプリ (電子メールを送信する) では、たまたまあるビューにあるすべてのデータを取得したいことがよくあるので、私のコードはビューモデルも活用したいと考えています.. MVC プロジェクトから移動した場合その後、再利用できますが、依存関係の問題があると思います(明らかに、コンソールアプリで SelectListItem は必要ありませんが、再利用したいビューを生成するために必要な異なるデータのコンテナオブジェクトにすぎない場合もあります)

または壊れた別のことは、次への依存関係でした:

私は多くのコードを持っているので:

  1. データベース内のテーブルにクエリを実行する
  2. それをオブジェクトのコレクションに変換します(私はnhibernateを使用しています)
  3. これを、System.web.mvc の一部である DTO オブジェクト (ViewModels フォルダーにある) または SelectListItem オブジェクトのリスト (ビューにドロップダウンを設定するために使用) に変換します。

この依存関係を解消する最善の方法についての提案を探して、再利用のために MVC プロジェクトからできるだけ多くのコードを移動できるようにしたいと考えました。

問題は、ViewModel コードを Model フォルダーと別のプロジェクトに吸い込もうとすると、ViewModel クラスが多くの依存関係を持っているため、スタックすることです。

System.Web.Mvc

SelectListItem などが原因です。

2 つのビュー モデル フォルダーが必要です (1 つは特定の system.web.mvc 参照を持つ MVC プロジェクトにあり、もう 1 つは別のプロジェクトにありますか?)。SelectListItem への依存関係が競合を引き起こし続けているようです

私が見たほとんどの例では、このチュートリアルのように、ViewModels が System.Web.Mvc に依存しています。

私はこれらの質問を見てきました:

これらは一種の関連性がありますが、記載されている私の特定の全体的なリファクタリングの質問に答えているかどうかはわかりません。

0 投票する
2 に答える
4126 参照

asp.net-mvc-4 - ViewModel を同じページに戻すにはどうすればよいですか

動画ページのコメント セクションで HTTPPost を機能させようとしていますが、ポストバックで問題が発生しています。保存はデータベースに記録されていますが、ページのリロード時に、最初に見つかった @Model.SelectedMediaItem.Name 変数を見つけることができません。私のhtmlは次のとおりです。

私のコントローラーのアクションは次のとおりです。

URL /Media/Screencast/1 で開始するページを呼び出すと、SelectedMediaItem の詳細が入力されたビューモデルが読み込まれ、すべてが期待どおりに表示されます。

これに投稿しようとすると、ビューモデルの詳細が失われていますが、コメントは実際には期待どおりに保存されていますが、表示するには別のページにアクセスして再アクセスする必要があります。

ビュー モデルを @Html.BeginFor に追加パラメーターとして渡すにはどうすればよいですか?

私のViewModelは次のとおりです。

0 投票する
3 に答える
2838 参照

c# - Asp.net-mvc pass ViewModel to partial view

This maybe really stupid but I just can't figure it out...

So here is the problem. I have a model say A and a model B.

Now, I have a ViewModel for B (but not for A).

So, now I have a view storngly typed to A. And it calls another partial view B to render all the properties of B. But now, how to I pass the viewmodel for B to the partial view? I can pass the model by just calling Model.b but not the viewmodel!