0

ユーザーが特定の外部キーを使用してデータベース エントリを追加できる Web フォームを追加しようとしています。

このようなリンクを作成しています

<%= Html.ActionLink("Edit", "EditSub", new { id = id }) %>

結果の URL はhttp://localhost:3015/TumourGroup/CreateSub/2になります(2 は先ほど actionlink に渡した ID です)。問題は、URL から id の値を取得するにはどうすればよいかということです。「メイン」テーブルを指す外部キーを持つ新しいテーブル エントリを作成できるように、「メイン」テーブルを取得するために使用しています。

4

2 に答える 2

0

コントローラー関数 CreateSub に int id を取り込ませる

public ActionResult CreateSub (int id)

この ID でフォームに移動し、別のデータ セットで投稿する場合は、次のように区別される 2 つの関数が必要です。

[AcceptVerbs(HttpVerbs.Get)]
public ActionResult CreateSub (int id)

get は入力フォームに移動するためのもので、post はフォームが投稿されたときに呼び出されます。

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult CreateSub (TumourGroupSubcategory tumourSubgroupToCreate)

以下は、コメントの説明に対応しています。

厳密に型指定されたビューを使用しない場合は、次のことができます。

ViewData["id"] = id;
ViewData["subGroupToCreate"] = ...

または、 JavascriptまたはJqueryを使用して、クライアント側の 2 番目の形式で実行することもできます

于 2010-03-04T21:06:50.713 に答える
0

TumourGroupそれがコントローラーの名前であり、次のようなルートがあると仮定します。

routes.MapRoute(
    "Default",
    "{controller}, {action}, {id}",
    new { controller="Home", action="Index", id="" }
)

次に、TumourGroupコントローラーで、次のようなコントローラーメソッドが必要です。

public ActionResult CreateSub (int id)
{
    // blah
}  

パラメータ id には、URL からの ID が含まれます。

EDIT:フォームを送信するときにIDを含めるには:

public ActionResult CreateSub (TumourGroupSubcategory tumourSubgroupToCreate)
{
    // blah
}  
  1. id をプロパティとしてTumorGroupSubcategoryクラスに追加します。

  2. TumorGroupSubcategory送信するフォーム ビューに、クラス の ID と同じ名前の非表示フィールドを含め、 ID フィールドを入力します。

ユーザーがフォームを送信すると、Model Binder がフィールドを取得し、tumourSubgroupToCreate自動的に id プロパティに入れます。

于 2010-03-04T21:11:28.317 に答える