問題タブ [mvccontrib]

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 に答える
1876 参照

asp.net-mvc - MVCContrib による並べ替え

複雑なオブジェクトを使用するときに MVCContrib グリッドを並べ替える方法を知っている人はいますか?

私のグリッドには Person のリストが表示されており、Country プロパティで並べ替えようとしています。問題は、Country が Person のプロパティである Address クラスのプロパティであることです。

個人.住所.国

例外:
プロパティ 'Country' は型 '{Namespace}.Person' に対して定義されていません
var sourceProp = Expression.Property(sourceParam, this.SortBy); \MVContrib\UI\Grid\Sortable\ComparableSortList.cs 行: 41

どんな提案も役に立ちます。

ありがとうございました、

MG1

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

asp.net-mvc - MVC ビューでの DRY

私はasp.net Webフォームで多くの作業を行ってきましたが、生成されたマークアップとの一貫性について気に入っていると思います。たとえば、TextFieldの複合コントロールを作成すると、生成されたマークアップを次のような単一のクラスで制御できますSRP を壊さないでください:

手動でマークアップを生成するとしたら、次のようになります。

問題は、ラッピング div を追加したり、スパンを移動したりするなど、何かを変更したい場合です。最悪の場合、何千ものビューを編集する必要があります。

そのため、私は MVC Contrib FluentHtml が本当に好きです。

私の質問は、上記のコード行にラッピング div を追加する最良の方法は何だと思いますか? 上記の理由から、手書きはオプションではないと思いますか? おそらく TextBox を拡張します: MvcContrib.FluentHtml.Elements.TextInput?

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

asp.net-mvc - ビューでのMVCContribFluentHtmlの使用

物事を正しく理解している場合、ビューでMVC ContribのFluentHtmlを使用するには、System.Web.Mvc.ViewPageではなくMvcContrib.FluentHtml.ModelViewPageから継承するようにビューを変更する必要があります。

そうすると、System.Web.Mvc.ViewPageによって提供される機能が失われますか?

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

asp.net-mvc - ASP.net MVC - さまざまなビューでモデルを永続化する方法

状況: asp.net で記述された一部のプロジェクト管理ソフトウェアには、プロジェクトの作成ページがあります (正常に動作しています)。テンプレートのリストからこのプロジェクトの作成前にタスクを追加する機能をこれに追加する必要がありますが、使用可能なタスクのリストは、作成フォームにあるいくつかの値に依存しています。

私の抽象的な解決策はこれです:

  • 「作成」ビューと「タスクの追加」ビューがあります-両方とも、コントローラーで定義された複合ビューモデルに強く型付けされています
  • 私の Create メソッドは、それを呼び出すために使用されたボタンをチェックします。ボタンが「Add Tasks」の場合は、AddTasks ビューをレンダリングし、作成ビューからモデルを渡します。これもすべて同じコントローラー内です。
  • AddTasks ビューは、2 つのボタンのうちの 1 つを使用して Create ビューに投稿します。1 つはビューをロードし、もう 1 つは実際に DB を保存します。

私の問題はこれです:

  • 異なるビューは同じモデルの異なるプロパティを使用しますが、ビュー間でこのモデルを渡すと、データがリセットされます (いずれにしても再読み込みまたは保存)。
  • これはデータの自動バインディングから発生していると推測していますが、フォームに存在しないフィールドは、渡された既存のモデルデータを上書きしないと思いました。
  • 現在、コントローラーにはモデルを操作するコードはほとんどありません。これらの場合、ビューからビューに渡されるだけです。

これはコントローラーコードです:

問題は、最終的に保存されるまで、これらのビュー全体でモデルの状態を維持するにはどうすればよいかということです。

ハック (TempData) または JS に依存するソリューションは避けたいと思いますが、それらが本当に最善のソリューションである場合は、これらに近づきません。

ありがとう、アダム・トーリー

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

c# - Entity Framework と FluentHtml を使用して外部キー オブジェクトを設定する方法

私がやろうとしているのは、FluentHtml を介して EF エンティティに外部キー オブジェクトを設定することです。Foo.Bar を介してオブジェクト Bar への参照を持つ Foo のエンティティがあります。私がやろうとしているのは、ビュー フォームに Bar の値を設定することです。私のモデルには、Model.Bars を介してすべてのバーのコレクションが含まれています。私の見解では、私は単に使用して<%= this.Select(m => m.Foo.Bar).Options(Model.Bars) %>いますが、モデルの状態はそれが有効ではないと主張しています。ドロップダウンにはバー ID が適切に入力されており、すべて有効に見えます。フォームで EF エンティティ参照プロパティを設定するために必要な特別な魔法はありますか?

オブジェクトと同様にキー参照をマップできるため、単に Select(m => m.Foo.BarId) を使用していた Linq2SQL から移動しました。ただし、Entity Framework はこれを許可しません。

0 投票する
21 に答える
29510 参照

c# - パラメータ名の反映:C#ラムダ式の乱用または構文の輝き?

私はMvcContribグリッドコンポーネントを見ていますが、グリッド構文で使用される構文上のトリックに魅了されていますが、同時に反発しています。

上記の構文は、生成されたHTMLのスタイル属性をに設定しますwidth:100%。ここで注意を払えば、「スタイル」はどこにも指定されていません。これは、式のパラメーターの名前から推測されます。私はこれを掘り下げて、「魔法」がどこで起こるかを見つけなければなりませんでした:

したがって、実際、コードは、正式なコンパイル時のパラメーター名を使用して、属性の名前と値のペアのディクショナリを作成しています。結果として得られる構文構造は確かに非常に表現力豊かですが、同時に非常に危険です。

ラムダ式の一般的な使用により、副作用なしに使用される名前を置き換えることができます。私は自分のコードでcollection.ForEach(book => Fire.Burn(book))書くことができることを知っているという本の例を見て、それは同じことを意味します。しかし、ここで突然MvcContribグリッド構文を使用すると、変数に選択した名前に基づいて積極的に調べて決定を下すコードを見つけました。collection.ForEach(log => Fire.Burn(log))

では、これはC#3.5 / 4.0コミュニティとラムダ式の愛好家との一般的な慣習ですか?それとも、私が心配するべきではない不正な1つのトリックの異端者ですか?

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

asp.net-mvc - mvc contrib の DB からのデータを使用した DropDownList の入力ビルダー

私はこのようなものを持っています

mvc contrib には列挙型の入力ビルダーがありますが、DB からデータを取得し、値ではなく選択した要素の ID を保存するため、私には適していません。

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

asp.net-mvc - Sparkビューで流暢なhtmlラムダ式を使用できません

asp.netmvcアプリケーションで流暢なhtmlとsparkviewエンジンを使用しようとしています。適切な基本クラスを割り当て、アセンブリを追加しました。これを行うと、TextBox( "MyProperty")は正常に機能します。ただし、this.TextBox(m => m.MyProperty)を使用しようとすると、以下の例外が発生します。これを引き起こしている可能性のあるアイデアはありますか?

例外:

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

asp.net-mvc - 入力ビルダー (MVC Contrib) を Spark View Engine で動作させるにはどうすればよいですか?

今日、 MVC Contribに含まれるプロジェクト MvcContrib.Samples.InputBuilders を変換して、 Spark View Engineで動作するように3 時間費やしましたが、これまでのところ変換できませんでした。

この2人がうまくいかない理由を知っている人はいますか?

私が行った変更

InputForm.spark:

Global.asax.cs:

Web.config:

(サンプル プロジェクトから最後の 3 つの名前空間をコピーしました。)

私が得ているエラー

Global.asax.cs で Spark/InputBuilder をセットアップする順序に応じて、2 つの異なる例外が発生します。

最初に InputBuilder をセットアップした場合、次に Spark (上記のコード):

エラー CS1061: 'System.Web.Mvc.HtmlHelper' には 'InputForm' の定義が含まれておらず、タイプ 'System.Web.Mvc.HtmlHelper' の最初の引数を受け入れる拡張メソッド 'InputForm' が見つかりませんでした (不足していますか? using ディレクティブまたはアセンブリ参照?)

最初に Spark をセットアップした場合、InputBuilder は次のようになります。

ビュー 'InputForm' またはそのマスターが見つかりませんでした。次の場所が検索されました。

~/Views/Home/InputForm.aspx

〜/Views/Shared/InputForm.aspx

~/Views/InputBuilders/InputForm.aspx

~/Views/Home/InputForm.ascx

~/Views/Shared/InputForm.ascx

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

asp.net-mvc - MVCContrib、Html.Grid: 行ベースの ID を td タグに添付するにはどうすればよいですか?

これが私の現在のビューコードです:

HTMLの「id」属性を各「name」tdタグに次のように付けたいと思います:

私の質問:

どうすればいいですか?

「Attributes」拡張メソッドを検討しましたが、どのように機能させることができるかわかりませんでした。