問題タブ [html-helper]
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.
.net - どうすればいいですか?テーブルセルのHTMLヘルパーまたは他の方法で?
私はasp.netmvcを使用していますが、この問題に対処する方法がわかりません。データベースにテーブルがあり、そこにいくつかのフィールドがあります。
これでテーブルを生成したい。だから私は最初にテーブルと必要なものすべてを作成するhtmlヘルパーを作成しようとしましたが、維持するのが難しすぎて、実際にテーブルを見て別のものを追加できるようにしたいデザイナーにとって問題を引き起こしています必要に応じて、各行または列に追加します。
今、彼らが何かを必要としているなら、私は彼らのためにそれをhtmlヘルパーに追加しに行かなければなりません。したがって、機能しないだけで、スキャフォールディングを使用するhtmlテーブルに固執する方がよいでしょう。
今私の問題は、このデータベーステーブルの2つの列がスタイル設定に使用されていることです。
私がこのテーブルを持っているかもしれないように
したがって、font-colorの実際の色がそのデータベースから取得されることを確認してください。各行の色が異なる可能性があります。
ですから、これをうまく設定する方法がわかりません。
足場を使っているのでこんなことができるみたい
これはひどいように見えます(スパゲッティコード)そして私は別の方法があるべきだと思います。
それで、テーブルセルのhtmlヘルパーを作成する必要があるのではないかと思いました。しかし、私はそれを行う方法がわかりません。
最初はこのようなことをしました。Html.TableCell("test","a");
最初のパラメータは「id」で、2番目はtdの「innertext」です。
しかし、これが非常に愚かで乱雑に見える非常に長いテキストである場合はどうなるかを考えました。
それで、beginフォームが行うことを実行して、usingステートメントなどに入れることができると思いましたが、usingステートメントを使用できるhtmlヘルパーを作成する方法がわかりません。
見栄えが良く、テーブルのように見えるこれを最適に作成する方法がわかりません。
ありがとう
c# - ASP.NET MVCのstring.FormatとTagBuilderの違いは何ですか?
ASP.NETMVCアプリケーション用のHtmlヘルパーファイルがあります。それらの大部分は、単にフォーマットされた文字列を返します。
これが私のフォーマットされた文字列ヘルパーの1つの例です:
上記と同じ結果が得られるTagBuilderバージョンは次のとおりです。
さて、私が読んでいる/MVCについて学んでいるいくつかのサイトは、実装の取り違えからです。TagBuilder
メソッドを使用するものもあればstring.Format()
、を使用するものもあり、両方を同じ意味で使用するものもあります。
TagBuilder
labelタグはかなり単純なので、このようなタグのクラスをインスタンス化するよりも、フォーマットされた文字列を返す方が「良い」でしょうか。
私は必ずしもパフォーマンスについて心配しているわけではありません。TagBuilderを選択する理由とフォーマットされた文字列を使用する理由について知りたいだけです。
悟りをありがとう!
asp.net - ASP.NET MVC の現在のパスへのリンクをスキップまたは無効にする
RouteValueDictionary
基本的に多くのリンクを受け取り、多くのリンクを返すヘルパーを書いています。現在のルート値へのリンクをスキップしたいと思います (例: へ/Products/Details/3
のリンクがあってはなりません/Products/Details/3
)。他の URL パラメーターがあれば無視します。
私が考えることができるのは、次のことを確認することです。
宛先アクションとコントローラー名が null または現在のものと等しい。
相互の宛先ルート値が定義されており、現在の値と同じであり、その逆も同様です。
より良い方法はありますか?
編集:
いくつかのコンテキスト: 私は多くのモデル、多くのコントローラー、多くのアクションを持っています。どこでも同じことを何度も何度も書くという考えは好きではないので、一般的な解決策をコーディングすることにしました: パーミッションを意識したアイコン リンク (ここでヒントを求めました)。
これで、メソッド、URL を取得するためのデリゲート、その他いくつかのものを持つPermissionAwareIconAction
クラスができました。内部では、いくつかのメソッドを呼び出して、このすべてのものを含む を次のようなコードで埋めます。Icon
HasPermission()
Global.asax.cs
ActionTable
そしてもちろん、他の特定のアクションを追加するコード。
また、コントローラーのアクションを次のように装飾します。
ビュー内では、次のことを行います。
Index
、およびのように、単一のオブジェクトに関連しないビュー
などのオブジェクトに関連するビューでDetails
。
このように、パーミッションは 1 つのクラスだけで定義されます。また、アクセス許可に基づいてリンクを表示または非表示にするコードは、ユーザーにアクションEdit
の表示を許可または禁止するコードと同じです。Edit
ほぼ完了です (完了したら、以前の質問への回答を投稿し、行ったことを再開する予定です)。
今、私はまだこの小さな作業をしなければなりません。ビュー内のアイコン、ビュー内のDetails
アイコンなどを避けてください。Details
Index
Index
長文失礼します。
templates - EditorFor<> を使用してドロップダウン リストをレンダリングする
これまでのところ、Html.EditorFor() を使用して、データ型に適切なテンプレートを動的にレンダリングできます。たとえば、string、int、または「Address」などのカスタム型です。
ここで、EditorFor() を使用して「親」フィールドをレンダリングしたいと考えています。すべての行を含むドロップダウンが必要で、ユーザーはこのドロップダウンから親を選択します。
「Parent」テンプレートは「ParentID」にアクセスできますが、リスト ボックスに入力する行の名前と ID についてはどうでしょうか。
これらはどこから来るべきですか?
テンプレートにデータ アクセス ロジックを入れることはできますが、それは関心の分離に違反することになります。
リストをレンダリングする HtmlHelper を作成することもできますが、HtmlHelpers はデータ アクセスではなく UI のみを実行する必要があるため、これによって懸念事項の分離が損なわれることはありませんか?
何か案は?
c# - ASP.NET MVC でモデル データをオーバーライドするデータ ディクショナリを表示する
次のようにユーザーを作成するビューがあります。
「作成」ボタンをクリックすると、次のように「POST」動詞のみを受け入れる「SaveUser」というアクションに HTML フォームがポストされます。
ユーザーが保存された後、ページは "EditUser" ビューにリダイレクトされます。
ここに問題があります: 非表示フィールドの値はゼロとして表示され続けました。Model.Id
はゼロより大きいです。他の何かがモデル ビューの値をオーバーライドしているようです。 ViewDataDictonary
容疑者でした。そのため、次のように、アクションでビューを返す前に行が追加されます。
案の定、これはうまくいきました。非表示フィールドに正しいユーザー ID の値が含まれるようになりました。
症状を治療する方法を見つけましたが、問題の原因はどこにあるのでしょうか?
別のビューを返す前に毎回ビュー データ ディクショナリをクリアするという考えは好きではありません。
html - ASP.Net MVC での出力インデントの制御
私の同僚は、適切にフォーマットされ、インデントされた html がクライアント ブラウザに配信されることに非常に「熱中」しています。これは、人間がページのソースを簡単に読み取れるようにするためです。
まず、サイト内のさまざまな領域で使用される部分ビューがある場合、レンダリング エンジンは自動的にインデントをフォーマットする必要がありますか (XmlTextWriter の Formatting プロパティを設定します)。
次に、私の同僚は、応答に書き込むための多数の HtmlHelper 拡張メソッドを作成しました。これらはすべて CurrentIndent パラメータを渡す必要があります。これは私には間違ったにおいがします。
誰でもこれを手伝ってもらえますか?
c# - css クラス名を asp.mvc ビュー ヘルパーに渡す
ASP.NET MVC ビュー ヘルパーでは、次のようなことができます
次のHTMLが生成されます
私の質問は....「クラス」属性を設定したい場合はどうすればよいですか?
「クラス」は予約語であるため、コンパイルされません。
回避策はありますか?
asp.net-mvc - MVC DropDownLists で選択した値を永続化する
私は MVC を初めて使用しますが、すべてのドキュメント、すべての質問、見つけることができるすべてのブログ投稿を読んでいます。
「作成」アクションとビューを作成しようとしています。私のデータ入力は比較的単純で一般的です。ドロップダウン リストとテキスト ボックスがあります。私の場合は、ユーザーの連絡先チャネルを作成しています。ドロップダウン ボックスで電子メールとテキスト メッセージのどちらかを選択し、テキスト ボックスに適切な形式の電子メール アドレスまたは携帯電話番号のいずれかの関連する連絡先情報を入力します。
これが私のビューページの(少し簡略化された形式の)です:
ViewDataDictionary を使用するのではなく、厳密に型指定された ViewData モデルを使用しています。ChannelDescription 要素は SelectList であり、選択肢のリストで初期化され、選択はありません。
フォームの初期表示、フォームへのデータ入力、およびコントローラーによるフォームからのデータの抽出はうまくいきます。
私の問題は、データに不正な形式の電子メール アドレスや携帯電話番号などのエラーが含まれていて、ビューに戻る必要がある場合、ドロップダウン リストの選択を再表示することに成功していないことです。ChannelDescription 要素は、ユーザーの選択を選択項目としてコントローラーで再作成されます。ビューのその行にブレークポイントを設定し、項目リストの選択された要素の Selected プロパティが true に設定されていることを確認しましたが、デフォルトの「チャネルの選択」が表示されたままです。
これは非常に一般的な状況のようで、それほど難しいことではありません。私は何を間違っていますか?
参考までに、これは MVC 1.0 (リリース)、Windows 7、および VS 2008 で、Firefox 3.5.2 で実行されています。
asp.net-mvc - EditorForModel テンプレートをオーバーライドする
個々のタイプに代替テンプレートを提供できますが、ラベル、フィールド、および検証をラップするテンプレートをオーバーライドすることは可能です。
変化する:
に:
リッチ