問題タブ [asp.net-mvc-futures]

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

c# - MVC3 ActionLinkと画像(ただしMvcFuturesなし)?

「すぐに使える」ASP.NETMVC3ヘルパーのいずれかを使用して「リンクボタン」を生成できるかどうか誰かが知っているかどうか疑問に思っていました...私は現在次を使用しています:

私はMvcFuturesの使用を避けようとしていますが、MvcFuturesを使用できたとしても、これを実現する拡張メソッドはないと思います。(この場合の解決策は、ここに示すようにカスタムヘルパーをロールすることだと思います

最後に、この投稿にもCSSを介してこれを処理するための良いアイデアがありますが、それは私が求めているものではありません...

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

asp.net-mvc - MVC Futures は、エリアと重複したコントローラー名を使用して厳密に型指定された RenderAction

MVC Futures ライブラリの強く型付けされた性質の Html.RenderAction を使用しようとしています

Site.Master から呼び出そうとしているプラ​​イマリ HomeController (area = "") に Navigation アクションがあります。

別の HomeController を管理者のポータブル領域に追加するまで、これはうまく機能しました。その後、次のエラーが発生しました。

「Home」という名前のコントローラーに一致する複数のタイプが見つかりました。これは、このリクエストを処理するルートが、リクエストに一致するコントローラを検索するための名前空間を指定していない場合に発生する可能性があります。この場合は、'namespaces' パラメーターを取る 'MapRoute' メソッドのオーバーロードを呼び出して、このルートを登録します。

「ホーム」のリクエストにより、次の一致するコントローラーが見つかりました: Areas.Admin.Controllers.HomeController Web.Controllers.HomeController

次の非 mvccontrib の厳密に型指定された RenderAction メソッドを使用して、問題を解決できました。この強く型付けされていないメソッドをページに含めたくないのですが、mvccontrib メソッドが領域を受け入れるようにする方法、または指定されているコントローラーのルートまたは名前空間に基づいて領域を生成することを知る方法はありますか。

以下に示すように、既定の領域を持つ複数のコントローラーをサポートするために、global.asax.cs ファイルに既に追加しており、これがコントローラーの正しい名前空間であることも確認しました。

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

.net - MvcContrib と MvcFutures の比較

MvcContrib と MvcFutures の関係は何ですか?

MvcFutures には、将来の ASP.NET MVC リリースの一部となるコードが含まれているように見えます。MvcContrib は、コミュニティからのいくつかの機能を含む非公式のライブラリです。私は正しいですか?

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

asp.net-mvc-3 - シリアル化時にプロパティを無視する

私はこれで髪を引っ張っています。

マルチステップ ウィザードを実装しようとしていますがHtml.Serialize、MVC3 Futures で html ヘルパーを使用しています。私のモデルのプロパティの 1 つがSelectList. このプロパティをシリアル化したくありません (とにかく試行すると爆発します)。

[NonSerialized]プロパティではなくフィールドでのみ機能するため、使用できません。[XmlIgnore]私は(とにかくうまくいくとは思わなかった)のような他の通常の方法をいくつか試しました。

を使用するときにモデル内のプロパティを無視する属性を提案できますHtml.Serializeか?

編集:

シリアル化しようとすると発生するエラーは、InvalidDataContractException です。このメッセージがあります:

タイプ 'System.Web.Mvc.SelectList' をシリアル化できません。これを DataContractAttribute 属性でマークし、シリアル化するすべてのメンバーを DataMemberAttribute 属性でマークすることを検討してください。型がコレクションの場合は、CollectionDataContractAttribute でマークすることを検討してください。サポートされているその他の型については、Microsoft .NET Framework のドキュメントを参照してください。

ただし、これを行うと、すべてのメンバーを[DataMember]1 つのプロパティを除外するだけでマークする必要があり、これはばかげているようです。

アップデート:

これの簡単な例は、次のコードです (System.Runtime.Serialization.dll への参照を必ず追加してください)。

Test.cs

HomeController.cs

ホーム/About.cshtml

これにより、InvalidDataContractException が生成されます

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

c# - カスタム モデル バインダーを使用した再帰的モデル バインディング

.NET MVC を使用してフォームにウィザード機能を実装しようとしています。Darin Dimitrov によるこれを達成する方法に出会いました。基本的に、彼は ISteps のリストを含むウィザード ビュー モデルを持っています。各ステップには、独自のプロパティと検証があります。

ビューでウィザードを (一種のビュー ステートとして) シリアル化し、それと現在のステップをコントローラーにポストします。したがって、ウィザードの各ステップで、そのステップのみを検証します。成功した場合は、現在のステップをインクリメントして繰り返します。

ほとんどの場合、これは非常にうまく機能します。ただし、個々のステップを検証するときに問題が発生しました。これは、一部のステップが検証のために以前に送信された値に依存しているためです。

そのため、ウィザードの個々のステップが前のステップにアクセスできるようにする方法を追加する必要があります。

これについて私が決めた方法は、ステップにウィザードを含めることです。

次に、Darin が提供するモデル バインダーで、BindModel のオーバーライドを追加します。

これはうまくいくようですが、私のコントローラには ModelStateError があります:

タイプ 'System.String' からタイプ 'Wizard' へのパラメーター変換は失敗しました。これは、タイプ コンバーターがこれらのタイプ間で変換できないためです。

これは、モデル バインダーが再帰的にバインドしようとしていることが原因だと思いますか?

これを解決する方法を知っている人はいますか?または - 私はこれに正しく近づいていますか? これを行うより良い方法はありますか?

上記はすべて、私が抱えている問題を説明するための基本的なサンプル プロジェクトです。

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

asp.net-mvc - T4MVC、それは時代遅れですか?まだいい?そうでない場合は、他に何を使用しますか?

皆さん、

今日の時点で、プロジェクトにT4MVCを導入する必要がありますか、それともMvcContribの強く型付けされた良さを使用する必要がありますか?

また

標準/主流に固執し、最新の状態を維持しようとしています。

このサイトにはQ&Aがありますが、2年前ではなく、最新で最高のものを聞きたいと思っています。

前もって感謝します。

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

asp.net - Html.Deserializeは、ブラウザーの更新後にTempDataを失います

ASP.NETMVC4ウィザードがあります。1つの大きなビューモデルをステップからステップに渡すために、先物アセンブリを使用します。モデルを次のようにシリアル化します

コントローラーで逆シリアル化します

TempDataを

すべてのウィザードステップには独自のビューがあり、RedirectToAction( "ActionName")を使用してコントローラーの前/次のアクションを管理します

ブラウザがF5またはメニューを使用して更新されない限り、すべてが正常に機能します。この時点で、コントローラーが再度呼び出されます。TempDataは再度保存されませんが、コントローラーにはすでにモデルがあります。

ただし、2つの列挙型プロパティがありません。これらは前の手順で使用されます。彼らはRadiobuttonForを介してビューにバインドされました。

では、なぜ不完全なモデルがあるのでしょうか。

よろしくお願いしますcsteinmueller

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

c# - MVC 4 / Entity Framework 5 /コードファースト-ビュー内のコレクション(オブジェクトのリスト)の永続化-いくつかの質問

私のプロジェクトにはいくつかのモデルがあり、そのうちのいくつかは他のモデルと1:多くの関係があります。ユーザーにはプロファイルページがあり、これはいくつかの部分的なビューに分割されます。各ビューは、特定のモデルの特定の属性をグループ化/表現します。

たとえば、特定のモデルの10個のプロパティのうち5個を部分ビューで表示し、使用しているユーザーに表示されないプロパティをそのように保持したいHtml.HiddenFor場合

これは、上記の単一エントリプロパティで機能します。5つの非表示のメンバー属性のうち、これらの1つがリストである可能性があります。を使用してリストを永続化できないことを理解していますHiddenFor。Mvc FuturesパッケージとHtml.Serializeヘルパー拡張機能に出くわしましたが、その使用方法が完全にはわからず、多くの優れた情報を見つけることができませんでした。

  • モデルがビューに渡されると、それに関連付けられているすべて(プロパティ、コレクション)にアクセスできるようになりますModel.Username。たとえば、で使用HiddenForしない場合Username、それはデフォルト値にリセットされることを意味しますか、それともnullになりますか?これはコレクションでも同じですか?
  • HiddenForユーザーに表示されないモデルのプロパティを永続化するための唯一の/最良の方法を使用していますか?
  • Html.Serializeユーザーに表示されないモデルのコレクションを永続化する唯一の方法を使用していますか?別のオプション?
  • 誰かが私が説明したのと同様の状況でコレクションを永続化する方法の簡単な例を提供/リンクできますか?
  • を使用する場合Html.Serialize、モデル全体をシリアル化する必要がありますか、それともコレクションをシリアル化するだけですか?

フィードバックをいただければ幸いです。

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

.net - MVC 4 Futures を使用した MVC 4 の厳密に型指定された ActionLink の構文は何ですか?

Visual Studio 2012 で新しい MVC 4 インターネット アプリケーション テンプレートを使用しています。MVC 4 Futures 用の Nuget パッケージをインストールしました。私_Layout.cshtmlはナビゲーションメニューを構築しています。

これは機能し、正しい URL を構築します。

@Html.ActionLink("Customers", "Index", "Customers")

これは私が働きたいもので、強く型付けされたバリエーションです:

「メソッドグループからメソッドを選択できません。メソッドを呼び出すつもりでしたか?」と嘆いていますが、それは本当の問題ではないことがわかります。

これは正しい HTML をコンパイルして出力しますが、インラインではありません。

Razor の構文 (Future の有無にかかわらず) を使用して、MVC 4 で強く型付けされた Action/ActionLink をどのように構築しますか?

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

c# - Mvc Futures シリアライゼーションの問題: SerializationException: デシリアライゼーションに失敗しました

最後にレポートを生成するウィザード UI である asp.net 4.5 アプリケーションがあります。MVC Futures プラグインを使用して、モデルをシリアル化し、フォーム間で渡します。最後までクリックして、レポートを生成できます。また、F5 キーを押して更新すると、前のリクエストからフォーム データが再送信され、フォームがリロードされます。

私の問題は、レポートを再生成する代わりに、ページで F5 を再度押しようとすると、通常は数分待った後、次のエラーが表示されることがあります。

SerializationException: 逆シリアル化に失敗しました。

どうやらブラウザが前回のリクエストを忘れてしまい、フォームを再送信せずにページを更新しようとしているようです。何が起こっているかについてのアイデアはありますか?フォームをすぐに再送信し、数分待ってからもう一度送信し、Fiddler を使用して毎回何が投稿されるかを確認することで、この問題を再現しようとします。

ここで何が問題になる可能性があるかについて、誰か考えがありますか?

更新 (2014 年 1 月 3 日):

レポートを生成する post メソッドは次のとおりです。

ビューページ自体には特別なことは何もありません。シリアル化されたオブジェクトさえありません。以前のレビューページにありました。そのページの一部を投稿できます:

完全なスタック トレース:

「/」アプリケーションでサーバー エラーが発生しました。


オブジェクト参照がオブジェクト インスタンスに設定されていません。説明: 現在の Web 要求の実行中に未処理の例外が発生しました。エラーの詳細とコード内のどこでエラーが発生したかについては、スタック トレースを確認してください。

例外の詳細: System.NullReferenceException: オブジェクト参照がオブジェクトのインスタンスに設定されていません。

ソース エラー: 現在の Web 要求の実行中に未処理の例外が生成されました。例外の発生元と場所に関する情報は、以下の例外スタック トレースを使用して特定できます。

スタックトレース:

[NullReferenceException: オブジェクト参照がオブジェクトのインスタンスに設定されていません。] System.Web.Security.MachineKey.Decode(String encodedData, MachineKeyProtection protectionOption) +268 Microsoft.Web.Mvc.MachineKeyWrapper.Decode(String encodedData, MachineKeyProtection protectionOption) + 41 Microsoft.Web.Mvc.MvcSerializer.Deserialize (文字列 serializedValue、SerializationMode モード、IMachineKey machineKey) +175

[SerializationException: 逆シリアル化に失敗しました。データがシリアライズされたのと同じ SerializationMode を使用してデシリアライズされていることを確認します。それ以外の場合は、内部例外を参照してください。 Mvc.DeserializingModelBinder.BindModel(ControllerContext controllerContext、ModelBindingContext bindingContext) +293 System.Web.Mvc.ControllerActionInvoker.GetParameterValue(ControllerContext controllerContext、ParameterDescriptor parameterDescriptor) +317 System.Web.Mvc.ControllerActionInvoker.GetParameterValues(ControllerContext controllerContext、ActionDescriptor actionDescriptor) +117 System.Web.Mvc.Async.<DisplayClass25.b _1e(AsyncCallback asyncCallback、オブジェクト asyncState) +446 System.Web.Mvc.Async.WrappedAsyncResult 1.Begin(AsyncCallback callback, Object state, Int32 timeout) +130 System.Web.Mvc.Async.AsyncControllerActionInvoker.BeginInvokeAction(ControllerContext controllerContext, String actionName, AsyncCallback callback, Object state) +302 System.Web.Mvc.<>c__DisplayClass1d.<BeginExecuteCore>b__17(AsyncCallback asyncCallback, Object asyncState) +30 System.Web.Mvc.Async.WrappedAsyncResult1.Begin(AsyncCallback コールバック、オブジェクト状態、Int32 タイムアウト) +130 System.Web.Mvc.Controller.BeginExecuteCore(AsyncCallback コールバック、オブジェクトの状態) +381 System.Web.Mvc.Async.WrappedAsyncResult1.Begin(AsyncCallback callback, Object state, Int32 timeout) +130 System.Web.Mvc.Controller.BeginExecute(RequestContext requestContext, AsyncCallback callback, Object state) +317 System.Web.Mvc.Controller.System.Web.Mvc.Async.IAsyncController.BeginExecute(RequestContext requestContext, AsyncCallback callback, Object state) +15 System.Web.Mvc.<>c__DisplayClass8.<BeginProcessRequest>b__2(AsyncCallback asyncCallback, Object asyncState) +71 System.Web.Mvc.Async.WrappedAsyncResult1.Begin(AsyncCallback コールバック、オブジェクト状態、Int32 タイムアウト) +130 System.Web.Mvc.MvcHandler.BeginProcessRequest(HttpContextBase httpContext、AsyncCallback コールバック、オブジェクト状態) +249 System.Web.Mvc.MvcHandler.BeginProcessRequest(HttpContext httpContext、AsyncCallbackコールバック、オブジェクト状態) +49 System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.BeginProcessRequest(HttpContext コンテキスト、AsyncCallback cb、オブジェクト extraData) +16 System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute( ) +301 System.Web.HttpApplication.ExecuteStep(IExecutionStep ステップ、ブール値& completedSynchronously) +155