2011-07-02 3 views
17
私は非常に頻繁にこれを行う

対ゲット:Html.Action - 投稿

<div id='Product'> 
@Html.Action("Create", "Product") 
</div> 

私は場所に埋め込むための別のコントローラのアクションに製品の作成フォームの絵を委任することができますので、それは便利です。しかし、私の問題はコントローラのアクションの[HttpPost]と呼ばれることがあります。

@ Html.Action()にGETバージョンを強制的に呼び出す方法はありますか?

答えて

18

方法はです。ページの現在のリクエストがポストメソッドの場合は、名前がHttpPostのメソッドを検索します。

何が起こっているのかは、現在のページをPOSTしていることです。同様に、実行するすべてのアクションもPOSTでなければならないと想定しています。

このような別の方法に切り替えるように強制する方法はありません。あなたのアクションにAcceptVerbs属性を追加

+5

.... IsPostプロパティとVOILAを使用してビューにGETまたはPOSTであるかどうかを確認してください。それは彼らのひどい前提です。私がやったことは、あいまいさがないようにアクションの名前を変更することです。 – ekkis

+0

これはおそらく最適な解決策です。喜んで助けになる。 – Buildstarted

3

試してみてください。

[AcceptVerbs(HttpVerbs.Get|HttpVerbs.Post)] 
public ActionResult Create() 
{ 
    //Your code 
} 

これは両方GETとPOSTリクエストのために動作します。

+0

えええええええええええと、そうすれば、両方の動作を同じメソッドにコーディングする必要があります。つまり、メソッド内でPostまたはGetが実行されたかどうかを判断する方法が必要です。これはどのように行われますか? – ekkis

-1

私はこの問題に直面しましたが、これは識別するのが難しかったです。私も同様の問題になったと確かに解決策がある

<div id='Product'> 
@{Html.RenderPartial("_CreatePartial", new Product());} 
</div> 
0

:私はこのように、代わりにHtml.RenderPartialを使用して終了しました。 ちょうど要求がはい、私はそれを理解しました同様の問題になった誰に

@if(!IsPost)  
{  
    HTML.Action("ActionName")  
} 

よろしく...