問題タブ [viewdata]

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 投票する
3 に答える
11045 参照

asp.net-mvc - タイプ 'IEnumerable' のキー 'Blah' を持つ ViewData アイテムはありません'

このエラーメッセージは私を狂わせています。

ASP.NET MVC v1.0 で Html.ListBox と Html.DropDownList HtmlHelpers を使用すると、それが発生します。リストへの入力は問題なく動作します - それらを表示することはできますが、選択した値を取得するためにコントローラーに渡された FormCollection を使用してモデルに新しいレコードを作成しようとすると、このエラーが発生します。この問題に関する他のいくつかの投稿に従って、いくつかの異なる構成とコードの配置を試しました-喜びはありません。

これが既知の問題であるかどうかを誰かが教えてくれることを願っています。必要に応じてコードを投稿する必要はありませんが、要求があれば投稿できます。

ああ、提案された回避策/解決策もいいでしょう;-)

ティア!

バーナード。


わかりました、簡単な更新です。以下の応答に 3 つのコメントを投稿し、ここで何をしているかについての詳細を明確にしました。

共有する別の問題があります-ScottGuの代替推奨アプローチを試しました-ModelViewを実装します。したがって、これを行うと、基本的に同じシナリオですが、「オブジェクト参照がオブジェクトのインスタンスに設定されていません」というメッセージが表示されます。「タイプ 'IEnumerable' のキー 'Blah' を持つ ViewData アイテムはありません」という同じ場所でエラーが発生しました。

これはおそらくEFの仕組みに関係していると思い始めています...

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

asp.net-mvc - asp.net mvc では、強く型付けされたビューデータ参照をビューページのどこに配置すればよいですか?

私のビューページにはコード ビハインドがありません。

0 投票する
4 に答える
9619 参照

asp.net-mvc - asp.net mvcでクエリ文字列値をどのように保持しますか?

asp.net mvcでクエリ文字列値を永続化する良い方法は何ですか?

URL がある場合: /questions?page=2&sort=newest&items=50&showcomments=1&search=abcd

ページング リンクでは、これらのクエリ文字列の値をすべてのリンクに保持して、たとえばユーザーが「次のページ」をクリックしたときに保持されるようにしたい (この場合、ページの値は変更されますが、残りは同じままです)。

これを行うには2つの方法が考えられます:

  1. ビューで Request.Querystring を表示し、値をリンクに追加します
  2. ViewData を使用して、コントローラーからビューに各クエリ文字列値を渡します。

一方が他方よりも優れていますか?それらが唯一のオプションですか、それともこれを行うためのより良い方法はありますか?

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

c# - 厳密に型指定されたマスター ページのポリモーフィズム - ネストされたマスター ページは継承属性を無視します

私は現在 CMS システムを作成していますが、以下が機能しないことがわかりました。

まったく理想的ではなく、汚いと感じる回避策があります。私は今のところそれで大丈夫で、別のアプローチにはあまり興味がありません(しかし、それで答えを止めさせないでください)。私が求めているのは、なぜそれが機能しないのかについての何らかの説明です - それは ASP.NET MVC のバグですか?

説明するのは難しいので、私のコード (毛羽立ちを除いて) に話させます...意味があることを願っています!

編集:コンパイラは2番目のマスターページの「継承」属性を完全に無視しているようです-質問の下部を参照してください。

ContentViewData.cs - BaseViewDataから継承していることに注意してください

Site.Master - BaseViewData型の厳密に型指定されたビューデータに注意してください

Content.Master - ContentViewData型の厳密に型指定されたビューデータと、それがSite.Masterの子マスターページであることに注意してください。

ContentItemImage.ascx

Content.Master の内部で、ContentItemImage を部分的にレンダリングして、ContentViewData オブジェクトのプロパティ (具体的には「ContentItem」プロパティ) を参照すると、以下で繰り返します。

次のエラーでその行に落ちた場合

コンパイル エラー

CS1061: 'object' には 'ContentItem' の定義が含まれておらず、タイプ 'object' の最初の引数を受け入れる拡張メソッド 'ContentItem' が見つかりませんでした (using ディレクティブまたはアセンブリ参照がありませんか?)

しかし、私がそのように変更すると、すべてうまく機能し、ダンディになります。

Content.Master - ContentViewData オブジェクトのプロパティを参照しようとするのではなく、モデル全体 (ContentViewData オブジェクト) を RenderPartial() に渡していることに注意してください。

ContentItemImage.ascx - 厳密に型指定されたビューデータが MyCMS.Data.Models.Content から ContentViewData クラスに変更されていることに注意してください。

ええ、それは機能しますが、アリバイにはなりません。

前もって感謝します、チャールズ。

編集:興味深いことに、コンパイラは 2 番目のマスター ページの「継承」属性を完全に無視しているようです。

例えば。私はこれを行うことができますが、それでも問題なくコンパイルされます...

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

c# - ASP.NET MVC:クロスアクションTempDataとViewDataを処理する方法

私は次のシナリオを処理するための良い方法を見つけようとしています(私はまだこれに少し慣れていません):

ユーザーは、RPX/OpenIdプロバイダーを使用して私のサイトから登録できます。

ステップ1:ユーザーはプロバイダーを介して認証します。プロバイダーは、アクションメソッドの1つに一時トークンを返します。

ステップ2:トークンを使用してユーザーのプロファイル情報を取得し、不足している必須フィールドとオプションフィールドを入力できるビューをロードします。

ステップ2では2つのアクションメソッドを使用します。1つはトークンを使用した情報の取得を処理するためのものです。許可情報を取得し、欠落/オプションのフィールドビューをロードする2番目のアクション。

TempDataを介して認証情報を2番目のアクションに渡します。2番目のアクションは検証を処理できるため、1つ以上のリクエストに対して承認オブジェクトを保持する必要がある可能性があります。技術的には1回限りのトークンであるため、トークンを使用して認証情報を再生成することはできません。また、ネットワークリソースを使用しているため、リクエストを再生成するのはばかげています。

同じアクションへの後続のリクエストのためにTempDataにオブジェクトを保持し、リダイレクトのためにオブジェクトを削除するにはどうすればよいですか?これは私のアプリケーションでは繰り返し可能なパターンである可能性があるため、この状況を自動的に処理するフィルターを作成する必要がありますか?

たとえば、TempData(存在する場合)をViewDataにマージするフィルター属性を想像します-しかし、同じアクションへの将来の呼び出しにデータを永続化するにはどうすればよいですか?もう一度TempDataにスローしますか?そして、リダイレクトが空であることを検出した場合、TempDataは空になりますか?

ありがとう

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

asp.net-mvc - ViewData がパーシャルで継承されない

特定のリスト ページにデータがない場合に、共有部分ビューを使用してレンダリングしようとしていました。ViewData を使用して、ページからリスト コントロールに情報を渡したいと考えていました。これにより、ViewData 値を使用して NoData 部分ビューが条件付きでレンダリングされます。

コントローラー アクションではなくビュー マークアップで指定できるようにしたいのですが、それらをビューに追加すると、子部分ビュー (Nodata 部分ビューなど) に継承されないようです。ただし、コントローラー アクションの ViewData 値でそれらを指定しても問題なく動作し、データは最後まで利用できます...

なぜこのように振る舞うのか誰にも分かりますか?

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

asp.net-mvc - ビュー モデル (ViewData)、UserControls/Partials、およびグローバル変数 - ベスト プラクティス?

すべてのパーシャルとビューに「グローバル」メンバー (CurrentUser、Theme など) を含める良い方法を見つけようとしています。

このデータを返すことができるロジック クラス (BL.CurrentUser など) は必要ありません。ビューのモデルの一部である必要があると思います。そのため、これらのメンバーを使用して BaseViewData から継承してみました。私のコントローラーでは、この方法または別の方法 (BaseController のフィルターまたは基本メソッド) で、継承クラスのインスタンスを作成し、それをビュー データとして渡します。この時点まではすべて完璧です。なぜなら、ビュー データをメイン ビューでベース メンバーと一緒に使用できるからです。しかし、パーシャルはどうですか?

ブログ投稿を表示する必要がある単純なパーシャルがある場合、次のようになります。

私のビューでこのパーシャルをレンダリングする簡単なコード (その model.Posts は ですIEnumerable<Post>):

パーシャルのモデルは BaseViewData ではないため、これらのプロパティにアクセスできません。したがって、BaseViewData から継承する PostViewData という名前のクラスを作成しようとしましたが、含まれているビューには、PostViewData を実際に作成してパーシャルに渡すコードがあります。

または、コピーコンストラクターを使用できます

先に進む前に、これを実装する他の方法があるかどうか疑問に思っています。

助言がありますか?

ありがとう!