2012-05-11 15 views
0

ViewBagの値をHTML.BeginForm()経由でコントローラに渡すにはどうすればよいですか?HTMLビューを使用して剃刀ビューからコントローラにViewBag値を渡す

@using (Html.BeginForm("SaveServiceItemCategory", "Admin", 
         FormMethod.Post, new { Sku = @ViewBag.SkuCategory })) 
{ 
    <span>Service Item Sku : @ViewBag.SkuCategory</span> 
} 

コントローラ

public ActionResult SaveServiceItemCategory(FormCollection formCollection, 
              string Sku) 
{} 

私はViewBagに値をヌルとしてSKUを取得し、ではないのです。

どうすれば解決できますか?

答えて

3

投稿する値を受け入れるBeginFormの亜種はありません。

BeginFormIDictionaryコレクションパラメータはhtmlAttributesです。あなたのHTMLコードをチェックすると、おそらくSkuというフォームに属性が表示されます。これらの属性はサーバーに送信されません。

投稿するデータを格納するフォーム要素を作成する必要があります。

@Html.Hidden("Sku", @ViewBag.SkuCategory); 
+0

これはサーバーに送信されていないようです。モデルのアイテムのみが投稿されています。 –

+1

すべてのフォームフィールドが転記されます。デフォルトのバインダーは、指定されたモデルにそれらをアタッチしないかもしれませんが、FormCollectionで利用可能であることがわかります。 –

関連する問題