0

ビューバッグアイテムを使用して、DIctionaryをビューに渡しました。

私の見解では、私は彼らが辞書に戻って変換しています:

var date = veiwbag.Dictionary as Dictionary;

私のdcitionaryは次のように設定されます:Key =文字列の日付( "MMM yyyy")例-SEP2012値=int-これは、日付がキーと一致するデータベース内のエントリの数です。

私はこれらのキーと値のペアを出力することができます。suerがエントリを選択する方法を知る必要があります。文字列Keyをacitonメソッドに返して、その文字列のすべての日付を取得できます。

私はMVC3を初めて使用するので、少し迷っています。

私の最初の考えは次のようなものでした:(この構文は、メモリから行うのと同じように少し苦労するかもしれません)

<a href="(@Href("/Posts/Previous/"+ @date.Key))">@date.key (@date.value)</a>

私のコントローラーにはアクションがあります:

public ActionResult Previous(string date)
{
       ..work on data

      return View(..my results);

}

ActionResultのコードは問題ありません。リンクをクリックするとActionResultに移動しますが、文字列はnullです。どうすれば合格できますか

date.key 

文字列変数としてActionResultに?私はこれをすべての方法で行っていますか?

4

2 に答える 2

0

デフォルトルートを使用する場合は、以下を使用します。

public ActionResult Previous(string id)

または、リンクは次のようになっている必要があります。

/Posts/Previous?date=sometext

しかし、より良い解決策は使用@Html.ActionLinkです:

@Html.ActionLink(String.Format("{0} ({1})", date.key, date.value), "Previous", "Posts", new { data = date.Key }, null)
于 2012-09-24T10:39:00.950 に答える
0

HTMLヘルパーを使用して、このコントローラーアクションへの適切なリンクを生成できます。

@Html.ActionLink(
    string.Format("{0} ({1})", date.key, date.value), 
    "Previous", 
    new { date = date.Key }
)

また、コントローラー名も指定する必要がある場合は、次のオーバーロードを使用できます。

@Html.ActionLink(
    string.Format("{0} ({1})", date.key, date.value), 
    "Previous", 
    "Posts",
    new { date = date.Key },
    null
)

デフォルトルートが設定されていると仮定すると、これにより次のマークアップが生成されます。

<a href="/Posts/Previous?date=SEP%202012">SEP 2012 (9)</a>

date前のコントローラーアクションが呼び出されると、パラメーターが正常に渡されますSEP 2012

于 2012-09-24T10:40:02.387 に答える