問題タブ [asp.net-mvc-3]
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.
c# - ASP.NET MVC: 特定のコントローラーから変数を取得する _layout.cshtml のロジック
MVC は初めてなので、用語が少しずれている場合はご容赦ください。
ASP.NET MVC3 ベータ版と VS 2010 を使用しています。
これが概念の誤りなのか、構文の誤りなのか、それとも何なのかはわかりません。
基本的に、私がやりたいことは、_layout.cshtml に対して、ActionResult が ViewModel.UseJQuery を true に設定するコントローラーの jQuery スクリプトを含めたいということです。
私は物事に慣れていないので、間違っている可能性がありますが、これを行うための最良の方法(私が現在試みていること)は次のようになります。
_layout.cshtml ファイル:
さまざまなコントローラーで
ただし、これにより、null をブール値に変換する必要があるというエラーが表示されます (UseJQuery フラグが見つからないと思います)。
だから、私の質問は2つあります:
- これは正しい方法ですか?
- もしそうなら、構文的にどこが間違っているのでしょうか?
これはおそらく初心者の苦痛に過ぎないと確信していますが、最初は解決策を見つけることができませんでした (ASP.NET MVC の本を注文しています -- 約束します!)
助けてくれてありがとう!
編集/更新:
これは、MVC 2 と 3 の間で異なる可能性があるものですか? たとえば、すぐに使用できる HomeController.cs の Index() ActionResult は次のとおりです。
編集/更新: 問題が見つかりました!
ああ!変数が設定されているときにコードが機能することに気付きましたが、設定されていない変数を試してみました (もちろん、false ではなく null 値が渡されます)。
ここで問題になるのは、_layout.cshtml にどのようなロジックを配置すれば、null をキャプチャして代わりに false に設定できるようになるかということです。
私は次のようなことを考えています:
ただし、これにはいくつかの問題があります。
- IsNull() は正しい関数ですか、それとも構文が間違っていますか? (VS 2010 での Razor の構文サポートの欠如は私を殺しています、笑)
- レイアウトで UseJQuery 変数をローカルに設定するにはどうすればよいですか? View.UseJQuery が機能するとは思えません。それはコントローラーが設定するものだからですよね?
いずれにせよ、上記の値を設定しようとしているエラーは「無効な式用語 '='」であるため、ViewModel 変数コレクションはビューに対して読み取り専用である可能性があると思いますか?
-- ショーン
validation - MVC3でサービスレイヤー検証を処理する方法
同じモデルに対して異なる検証セットを必要とするプロジェクトに取り組んでおり、それを処理するための最良のソリューションを見つけようとしています。
簡単な例として、お客様のDTOを使用する場合があります。
最初のビューでは、DataAnnotationsを使用してDTOに表示されるため、すべてのフィールドが必須です。
2番目のビューでは、FirstNameとLastNameが必須である場合がありますが、Titleはオプションであり、ビューに表示されない場合もあります。
複雑な問題が発生します。検証ルールをサービスレイヤーに配置し(同じ検証を利用して後でAPIを提供できるようにするため)、データアノテーションにアクセスし、それらに対して検証して、バックアップを報告します。検証されない場合はUIに移動します。
これまでのところ、勝利の方法は次のとおりです。
- すべてのビューには、DataAnnotationsが存在する専用のビューモデルがあります。
- 次に、ビューモデルはAutomapperなどを使用してドメインオブジェクトをマップします。
- 次に、ドメインオブジェクトはリポジトリとサービスに渡され、アクションが実行されます。
これは次のことも意味します。
- オブジェクトがそこに到達するまでに、オブジェクトはビューモデルではなくドメインオブジェクトになるため、検証はサービスレイヤーでは行われません。
エンタープライズアプリケーションでこれを処理するためのより良い方法はありますか?私たちはまだ解決策を見つけていません。
asp.net-mvc - ASP.NETMVC3およびHTMLヘルパー拡張機能
ASP.NET MVCについて何か誤解しているのか、ASP.NET MVC Beta 3で何らかのバグを見つけたのかを調べようとしています。HTMLヘルパーを使用しているときに、PartialViewが間違ったモデルを取得する問題が発生しています。拡張機能
私のコントローラーコードは次のようになります。
これが挿入である場合、プロパティvm.Idは-1として開始され、MapGeneralViewModel.ToModelの呼び出し後、データベースに永続化され、query.Idに適切な値が設定されます。
MapSettingsViewModel.FromModelを呼び出すと、新しいビューモデルが返され、正しいIdプロパティに新しく作成されたid値が含まれていることを確認しました。
ビューの関連ビットは次のようになります。
ビューにブレークポイントを設定すると、Model.Idが正しく設定されます。
コントローラの実際の出力(Model.Id == 70の場合)は次のようになります。
したがって、HTMLヘルパーを使用せずに出力された値は正しいですが、ヘルパーによって出力された値は、コントローラーに渡されたビューモデルを何らかの形で取得しています。
私はこれがどのように起こっているのか分かりません。私はさまざまなことを試しました:
- PartialView( )ではなくView()を使用する
- MapGeneralViewModel.FromModel()の結果をvmに割り当ててから、 vmをビューに渡します
- <%:および<%=を使用
- vmをnullに設定します(古いビューモデルはどういうわけかまだ使用されています)
- 着信IDの値を0に変更します(結果として、-1ではなく0がビューに出力されます)
- 問題は「Id」と呼ばれるプロパティに固有のものではありません。同じ結果で他のフィールドもテストしました
これがどのように機能するのか混乱していますか、それともベータバグに遭遇しましたか?違いがある場合は、Win764ビットマシンのローカルAzureランタイム内で実行されています。
razor - JavaScript内でのRazorViewEngineの使用
新しいASP.NETMVC3.0 Razor View Engineを使用して、JavaScriptコード内でそれを呼び出す方法はありますか?
通常のビューエンジンでは、次のようなことができます...
しかし、私はRazorで同様のことをする方法を見つけることができません。
production - ASP.NET MVC 3 は運用中ですか?
ASP.NET MVC 3 がベータ版になり、「稼働」の準備が整いました。セキュリティ、パフォーマンス、およびリリース バージョンへのアップグレードの容易さに興味があります。
asp.net-mvc - ASP.NETMVC2純粋なjqueryクライアント側の検証
jqueryのみで検証をフックするにはどうすればよいですか?Microsoftajaxを使いたくない。このブログで私が欲しいものを正確に見ましたが、ファイルMicrosoftMvcJqueryValidator.js
は非推奨またはキャンセルされているようです。
今これを行う公式の方法はありますか?おそらくasp.netmvc3を使用しています。
asp.net-mvc-3 - MVC2 - テンプレート内の親モデル (コンテナー) を取得する方法
DataAnnotations を使用して MVC2 アプリを作成しています。私は次のモデルを持っています:
Bar のカスタム表示テンプレートを作成したいと考えています。次のテンプレートを作成しました。
さて、私の問題は、Bar のテンプレート内で、モデルから別のプロパティにアクセスしたいということです。他のすべての FooModel プロパティをハードコードする必要があるため、FooModel 用に個別のテンプレートを作成したくありません。
デバッガーで簡単に調査した後、次のことがわかります。
this.ViewData.ModelMetadata.ContainerType
ですFooModel
(予想通り)this.ViewData.TemplateInfo
には、 と の2 つの要素を含むVisitedObjects
(タイプ の )非パブリック プロパティがあります。System.Collections.Generic.HashSet<object>
FooModel
DateTime?
FooModel にアクセスするにはどうすればよいですか? Reflection を使って自分のやり方をハックしたくありません。
アップデート:
タイプセーフを可能にする最良の解決策として私には見えるので、ムーティネーターの答えを受け入れました。Mootinatorの回答がそれに基づいているため、Tx3の回答にも賛成しました。それにもかかわらず、この種のシナリオでは、MVC からのより良いサポートが必要だと思います。これは、現実の世界では非常に一般的ですが、サンプル アプリには欠けていると思います。
asp.net-mvc - ASP.NET MVC ドロップダウン エディター テンプレート
MVC でドロップダウン リスト エディター テンプレートを作成するための最良の方法を探しています。いろいろな方法があるようですが、ベストな方法が見つからず、人それぞれやり方が違うようです。私はRazorでもMVC3を使用しているので、これで動作する方法が推奨されます。
asp.net-mvc - Razor 構文は、UI マークアップで魅力的な利点を提供しますか?
Scott Guthrie が彼のブログで Razor についてかなり言及し始めていることに気付きましたが、それが私のスタイルに適しているかどうかはわかりません.
「標準」の種類の ASP.Net マークアップ (コンテンツ プレース ホルダーとインライン コード) にかなり慣れている人にとってはかなりなじみのないスタイルですが、管理するページが多くなり、マークアップが明確ではないように感じます。
それに対する他の人々の感情はどうですか?新しい MVC ページをスキャフォールディングするときに真剣に検討する必要があると思われるものですか、それとも存在しない問題を解決しようとしているだけですか?
jquery - 最新の jQuery ファイルと ASP.NET MVC で Knockout.js を使用する
ASP.NET MVC 3.0 で Knockout.js を使用しようとしています (タイトルはそれを与えましたよね?!)
いくつかの問題が発生しています (ASP.NET MVC 3.0 よりも新しい jQuery Tmpl Engine に関連しています)。
私はテストで Steve Sanderson のサンプル プログラムを使用しており、新しい Razor View Engine で彼の結果をほぼ再現しました (Razor が私の問題と関係があるとは思いません)。
http://blog.stevensanderson.com/2010/07/12/editing-a-variable-length-list-knockout-style/
ただし、HTML バインディング属性ではなく、自然なjquery バインディングをもっと使いたいと思っています。これについては、ノックアウトのチュートリアルで詳しく説明されています。 http://knockoutjs.com/documentation/template-binding.html
ただし、説明どおりにこれを再現することはできません。ビューコードの下に表示します。{{foreach (i, gift) gifts}}
私の問題は、うまくいかないという事実から来ています。私は多くの変種を試しました({{foreach (i, gift) gifts()}}
他の例で見たように)。
最新の ファイルを使用していknockout.js
ます。テンプレートエンジンjQuery 1.4.3.
に使用しています。http://ajax.microsoft.com/ajax/jquery.templates/beta1/jquery.tmpl.js
ただし、tmpl.js
nockous.js の Web サイトに含まれている同じファイルを使用してこれを試してみたところ、同じ結果が得られました。
jQuery テンプレートを使用する場合、現在の仕様では、テンプレートはレンダリングされません。
jQuery テンプレート タグのドキュメントは、http: //api.jquery.com/category/plugins/templates/template-tags/にあります。
私の正確なモデルについて誰かが混乱した場合に備えて。{{foreach (i, gift) gifts}}
{に置き換えると、モデルは正しくレンダリングされ、正しく動作しますが、jQuery ネイティブ宣言は何にも{foreach gift}}
使用できません。${property}