20

私はこれを非常に頻繁に行います:

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

製品作成フォームのペイントを別のコントローラーアクションに委任して、場所に埋め込むことができるので便利です。ただし、メソッドがコントローラーアクションの[HttpPost]を呼び出すことがあり(どのような条件であるかはわかりません)、もちろん失敗するという問題があります。

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

4

4 に答える 4

20

その方法Html.Actionは、ページに対する現在のリクエストがpostメソッドである場合、名前が。のメソッドを検索することHttpPostです。

つまり、現在のページをPOSTしているということです。同様に、アクションは、実行する必要のあるすべてのアクションもPOSTである必要があると想定しています。

そのような別の方法に切り替えるように強制する方法はありません。

于 2011-07-02T06:24:43.907 に答える
5

AcceptVerbsアクションに属性を追加してみてください。

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

これは、GETリクエストとPOSTリクエストの両方で機能します。

于 2014-02-12T11:38:33.820 に答える
-1

私も同様の問題に直面し、確かに解決策があります。IsPostプロパティとVOILAを使用して、リクエストがgetであるかPOSTであるかを確認するだけです。

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

同様の問題を抱えた人は誰でも...

于 2017-02-11T06:43:27.837 に答える
-2

この問題が発生しましたが、特定するのは困難でした。代わりに、次のようにHtml.RenderPartialを使用することになりました。

<div id='Product'>
@{Html.RenderPartial("_CreatePartial", new Product());}
</div>
于 2015-02-23T01:13:33.133 に答える