0

コントローラーに、いくつかのオプションの値といくつかの整数値を受け入れる単純なアクションが必要です。

これは私が望む私のルートです:

HTTP.POST
/review/create

そして、これは私が望むアクションメソッドです...

[AcceptVerbs(HttpVerbs.Post)]
public JsonResult Create(int userId,
                         int addressId,
                         byte baseScore,
                         byte reviewType,
                         string subject,
                         string description)
{ ... }

上記の引数のすべてがフォーム コレクションの値によって設定されるという無知な印象を受けていますが、そうではありません。また、それらを処理するためにルートを記述する方法がわかりません...それらの値はフォームポストデータであるため....

これが私のglobal.asaxです....

routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

    // Api - Search methods.
    routes.MapRoute(
        "Search Methods",
        "{controller}/{action}"
    );

実際、アクションメソッドは見つからないように見えるため、呼び出されることはありません:(

しかし、これらの引数を指定せずに create と action を実行すると、????????? が見つかります。

ルート /review/create に対して、いくつかの require 引数といくつかのオプションの引数を受け入れるルートとアクション メソッドをどのように記述しますか?

4

4 に答える 4

0

ポスト リクエストで content-type="application/json; charset=UTF-8" を設定し、メソッド パラメーターの値を JSON 形式で渡します。これにより、Asp.MVC は FormCollection でそれらの値を検索しなくなります。

于 2010-01-14T21:06:33.490 に答える
0

私が見る限り、コントローラーのアクションを次のように書き換えることができます。

public ActionResult Create(int foo, int bar, byte blah, string name, int? xxx) {
    // code here
}

ModelBinder は、foo、bar、および blah が設定されていることを確認します。名前と xxx は null の場合があります。現時点ではテストできませんが、アクションの戻り値の型はActionResult.

于 2010-01-13T08:48:42.870 に答える
0

フォームを POST する場合は、フォーム内の要素 (テキストボックス、チェックボックス、テキストエリアなど) に、メソッドのパラメーターと一致する ID があることを確認してください。FormCollection別の方法として、メソッドにa を渡しmyFormCollection["foo"]、値の文字列表現を取得することができます (これは int に解析できます)。

于 2010-01-13T08:53:42.907 に答える
0

私の経験からすると、この質問には多くの重要な要素と概念が欠けています。

何よりもまず、フォームなしで POST を実行できるとは思えません。フォームには、コントローラー メソッドに渡される値を取得するためのコントロールが含まれている必要があります。目標が単純に POST コントローラー メソッドの単体テストである場合は、コメントの 1 つに基づいて、テストでメソッドを直接呼び出すだけです。ビューを使用する場合は、単体テストではなく、統合テストを行っています。テストの種類に関係なく、フォームを作成しないことを選択しているため、テストは常に失敗します。Fiddler、Firebug、またはその他のメカニズムを使用して POST を強制できたとしても、まだビューをテストしているのではなく、HTTP プロトコルをテストしています。

Web ページをテストするには、実際には何の役にも立たない簡単なテストをまとめて行うよりも、WatiNSeleniumなどの Web アプリケーション テスト ツールを使用することを強くお勧めします。

于 2010-01-14T06:01:16.223 に答える