2016-08-30 9 views
0

私は前のURLのアクションである変数の1つを使用してフォームをポストしようとしていますが、POSTするたびにその変数はnullになります。 POSTアクションに達するまで、少なくともその情報を保持する方法はありますか?RequestContext.RouteDataとRequest.UrlReferrer情報はFormMethod.Postで失われます

私はUrl.RequestContext.RouteData.Values["action"]Request.UrlReferrerの両方を使ってアクションを取得しようとしました。私の見解では

私は、ファイル、アクション名、およびIDをPOSTしようとしている:

Html.BeginForm("Edit", "Expenses", FormMethod.Post, new { enctype = "multipart/form-data", actionName = actionName, id = idInt })

私はそれそれは仕方続ける場合は、アクション名がnullですが、私の場合FormMethod.Post部分をBeginFormメソッドから削除します。アクション名が正常にポストされ、ファイルはnullです。

答えて

1

Html.BeginFormヘルパーメソッドを誤って使用しています。ルート値とhtml属性を1つのオブジェクトに混在させました!

あなたの現在のコールは最後のパラメータは、htmlAttributesある以下の過負荷

public static MvcForm BeginForm(
    this HtmlHelper htmlHelper, 
    string actionName, 
    string controllerName, 
    FormMethod method, 
    IDictionary<string, object> htmlAttributes 
) 

と一致します。だからあなたのコードで、それはあなたがIdactionは、フォームの2つの属性になっていることがわかります。この

<form action="/Expenses/Edit" actionname="someActionName" enctype="multipart/form-data" 
                    id="22" method="post"> 

</form> 

のようなformタグのマークアップを生成します!

はあなたが提供するルート値を使用して、正しいフォームのaction属性の値を生成します両方のルート値とhtmlAttributes

@using (Html.BeginForm("AddToCart", "Home", new { actionName = "Edit", id = 34 }, 
           FormMethod.Post,new { enctype = "multipart/form-data", })) 
{ 
     <input type="submit"/> 
} 

を指定することができthis overloadを試してみてください。

+1

ありがとう! :-) – Sicypher

関連する問題