問題タブ [mvc-editor-templates]
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-3 - 同じDateTime値に異なるEditorTemplatesを使用することはできませんか?
私のモデルにpublic DateTime Date {get;set;}
プロパティがあるとしましょう。ビューでは、2つのテキストボックスで表す必要があります。1つは日付用、もう1つは時刻用です。
2つの異なるエディターテンプレートを作成しました
DateTime.cshtml:
およびTimeOnly.cshtml
そして、ビューのEditorForフィールド
ここで問題となるのは、コントローラーに渡されるDateプロパティの実際の値のデフォルト時刻が12:00であるということです。EditorForフィールドの順序を変更すると、同じことが日付にも起こります。日付は、TimeOnlyテンプレートが適用された直後にデフォルトの日付値にロールバックされますが、時間の部分は正しいままです。
ビュー自体でも値は問題ありませんが、送信時に、正しい日付とデフォルトの時刻、またはその逆のいずれかでデフォルト値をコントローラーに渡します(最初に使用したテンプレートによって異なります)
もちろん、モデルに別のプロパティを追加するだけで、いつでも日付と時刻を分離できますが、より良い解決策はありますか?
asp.net-mvc - RadioButtons を使用した null 許容ブール値の MVC3 EditorTemplate
オブジェクトの 1 つに null 許容ブール値のプロパティがあります。ロジックで true を Yes、false を No、null を N/A にします。多くの異なるオブジェクトにこのような複数のプロパティを設定するので、エディタを作成してこれらのプロパティのテンプレートを表示するのが最も理にかなっています。これがすべて機能した後、jQuery UI を使用してボタンセットの視覚要素を適用しますが、今のところ、それは私の問題の範囲を超えています。私のエディター テンプレートは次のようになります。
私の問題は、どのような状況でも、このエディター テンプレートでモデルの現在の値を正しく表示できないことです。このスコープではモデルのプロパティをレンダリングするのではなく、モデル自体をレンダリングしているため、MVC3 の組み込みロジックは、名前が空または null でないことを確認するために行われるチェックのために、checked プロパティを正しく設定しません (MVC3 を参照)。ソース、InputExtensions.cs:line#259)。モデルと比較してチェックされた属性を動的に設定することはできません。ブラウザは値ではなくチェックされた属性の存在でラジオボタンをチェックするため、ラジオボタンは次のように見えますが、最後のものがまだ選択されています.
if?truevalue:falsevalue
真/偽の部分が異なる匿名型になり、エラーが発生するため、次のようなものを使用して HtmlAttribute を条件付きで追加することはできません。
私はこれをどのように行うべきかについて苦労しています。この問題に取り組む方法について提案があることを願っていますか?
asp.net-mvc - ヘルパー @Html.EditorForModel() を使用して一部のフィールドを無視します
@Html.EditorForModel()
すべてのビューでヘルパーを使用します。
私のモデルで 2 つのフィールドをスキップしたいという要望がありますが、このビューでのみ、もう一方のビューでは通常どおりこれらのフィールドを表示し続ける必要があります。
このビューでのみこれら 2 つのフィールドをスキップするにはどうすればよいですか?
c# - IEnumerableのMVC3エディターテンプレートは、@Html.LabelForに「for」属性を生成しません
クラス用のカスタムEditorTemplateがViewModel
あります(チェックボックスリストが生成されます)。
ビューでは、私のモデルはですが、生成されたHTMLIEnumerable<ViewModel>
を呼び出すと、タグの属性は空になります。@Html.EditorForModel()
for
label
チェックボックスを1つだけレンダリングしたい場合は、すべて正常に機能します。
EditorTemplate:
私の見解:
生成されたHTMLは次のようになります(1つのチェックボックスに対して):
'for'属性が空であることがわかります。私は何か間違ったことをしていますか、それともこれはMVC3のデフォルトのバグのようなものEditorTemplate
ですIEnumerable<T>
か?
asp.net-mvc - UIHint コントロール パラメータを介して SelectList を送信できますか?
データ注釈を介して SelectList を送信できますか? 何かのようなもの...
構文はわかりませんが、これは可能のようです。もしそうなら、エディタテンプレートからどのようにアクセスできますか?
そうでない場合、どうすれば SelectList を DropDownList Editor Template に動的に送信できますか? 特に、SelectList ごとに個別のテンプレートを作成することは避けたいと思います。テンプレートが多すぎます。ありがとう
編集: 15 音節のモンスターである DataAnnotationsModelMetadataProvider をオーバーライドするよりも直接的であると考えたため、2 番目のオプション (リフレクション) に取り組んでいます。
c# - TemplateInfo.HtmlFieldPrefix のリスト インデックスを変更するにはどうすればよいですか?
HtmlFieldPrefix のインデックスを変更するにはどうすればよいですか?
私はChildren[0]
EditorFor() から取得しており、それを作成したい、Children[@Model.Id]
またはChildren[2].Children[4]
EditorFor() から取得しており、作成したいChildren[@"ParentModel".Id].Children[@Model.Id]
実行時まで実際のプレフィックスはわかりません。できれば、それを変更する組み込みの方法があるでしょうか?
それとも文字列をいじるだけですか?私はまだ C# 文字列関数を使い始めたばかりです。
asp.net-mvc - 追加データを EditorTemplate に渡す
LineItem (過度に使用されたショッピング カートの例から) があり、EditorTemplate を使用してレンダリングしたいとします。
親ビューから @Html.EditorFor(m => m.LineItems) を使用してレンダリングしても問題ありませんが (部分的またはその他)、混乱を招くのは、追加のデータを渡すための最良の方法です (データを持つ SelectList など)データベースから入ってくる) テンプレートに。
明らかに、これらの余分なアイテムを追加して LineItem モデルを汚染するべきではありません (ただし、ビューの観点からは必要です)。
ViewBag/ViewData トリックに頼る前に、強く型付けされた方法があるかどうかを確認しようとしています。
データを渡すために「LineItem」固有のビューモデルを作成しようとしましたが、MVC によって生成された名前を台無しにし、追加のレイヤーをコレクションに追加します (viewmodel の IEnumerable<> を EditorFor( ) 実際の LineItem の IEnumerable<> の代わりに呼び出します)
また、これは EditorTemplate の間違った使い方ですか? データベース テーブルからのオプションを持つドロップダウンを必要とする LineItem は、EditorTemplate には多すぎますか?
MVC 涅槃に向けて私を導いてください。答えを待っている間、他のアイデアを試してみます!
明確にするために:私が EditorTemplate の使用を検討している理由は、それが私に提供する自動コレクション処理のためです。そうしないと、[id] ビジネス全体が粘着的になりすぎます。
asp.net-mvc - チェックボックスの問題のリストをバインドするモデル
私の EditorTemplates には、2 つのビューがあります。1 つは自分のカテゴリ用 (_Category と呼ばれる)
もう 1 つはカテゴリのリスト用 (_Categories と呼ばれる)
これらのカテゴリを表示するビューには、次のように使用されているカテゴリのリストがあります。
ページを表示すると、隣に名前が付いた複数のチェックボックスが表示されます。チェックボックスの名前はあまり良くありませんが、次のようになります。
....name="Categories.[1].Batman"....">
名前に余分なドットがありますが、これは削除する必要があります。これを修正する方法についてのアイデアはありますか?
前もって感謝します
.net - エディタテンプレートはDisplayFormatでは機能しません
DateTimeフィールドのエディターテンプレートを作成しようとしていますが、DisplayFormat属性を尊重していないようです。
私のモデル:
/Views/Projects/EditorTemplates/DateTime.cshtmlフォルダー内のマイエディターテンプレート
これがすべてを結び付けるビューです。
このようにすると、日付の時間部分が表示されます。エディターテンプレートを削除すると、正常に機能し、日付部分のみが表示されます。エディターテンプレートがあるのに、なぜDisplayFormatを無視しているように見えるのですか?
asp.net-mvc - 複合型のリストのEditorTemplateはnullを返しますが、その要素のEditorTemplateは正常に機能します
ユーザーがcheckboxexを選択することで、任意の数のクラブを選択できるビューがあります。クラブは、タイプリスト<ClubModel
>のメインモデルのプロパティです。リファクタリング中、私はこれから始めます:
これは正常に機能します。モデルは、入力されたClubsプロパティとともに返されます。
次に、>タグを取り出して <td
、EditorTemplateに移動します。
これは引き続き機能します(テンプレートは表示されていません)。
次に、ループもEditorTemplateに移動します。
'ListOfClubs'という名前のEditorTemplateを適切に作成します。
これにより、IsAvailableプロパティのチェックボックスが付いたクラブが正しく表示されますが、投稿すると、モデルのClubsプロパティはnullになります。
どこが間違っているのですか?
編集:私は以下を使用してCymenの答えを実装しようとしました:
または、これらの要素のリストを渡すときにelementtemplateを指定します。ただし、例外が発生しました。System.InvalidOperationExceptionはユーザーコードによって処理されませんでした。Message=ディクショナリに渡されるモデルアイテムのタイプは'System.Collections.Generic.List`1 [InvallersManagementMVC3.ViewModels.ClubModel]'ですが、このディクショナリはタイプ'InvallersManagementMVC3.ViewModels.ClubModel'のモデルアイテムが必要です。