1

フォームを次のように定義するビューがあります

<% using (Html.BeginForm( "Update", "CcisCase", FormMethod.Post, new { id = "ccisEditForm" } ))

送信ボタン付き:

RegisterRoutesメソッド(の-派生HttpApplicationクラスglobal.asax.cs)には、次のものがあります。

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

        routes.MapRoute(
            "CcisCase",
            "CcisCase/{action}/{cmDatabaseId}/{caseId}",
            new { Controller = "CcisCase", Action = "CcisCaseEdit", caseId = "" } );

MVCによって生成されたURLは「/Update」で終わりますが、パラメーターはありません。私は何が間違っているのですか?

ありがとう、ボブ

4

3 に答える 3

2

どのようなパラメータが表示されることを期待していますか? Post はクエリ文字列にパラメーターを追加しませんが、FormMethod.Get は追加します。そして、その id によるオーバーロードは、タグ用にレンダリングする HTML 属性のコレクションです (これはご存知だと思いますが、念のため)。

HTH。

于 2010-11-02T18:12:04.563 に答える
1

私の問題が何であるかを理解しました。次のように既存のルート データを渡す必要がありました。

        using (Html.BeginForm( "Update", "CcisCase", ViewContext.RouteData.Values, FormMethod.Post, new Dictionary<string, object> { { "id", "ccisEditForm" } } ))
于 2010-11-02T22:59:24.593 に答える
1

ルートにはパラメーター {caseId} が含まれていますが、BeginForm は id 値のみを定義しています。

new {id = "cssEditForm"}

caseId 値を含めるには、このようなものが必要です

using (Html.BeginForm( "Update", "CcisCase", FormMethod.Post, new { caseId = 1, id = "ccisEditForm" }

アクションが id="ccisEditForm" 値を使用していない場合は、それを削除してコードの混乱を減らすことができます。

于 2010-11-02T18:35:51.627 に答える