2011-01-19 22 views
3

GETアクションを実行するのは、別のアクションによって呼び出された場合のみ実行されるため、ユーザーがアドレスバーにURLを入力した場合は実行されません。これが当てはまるかどうかを確認するにはどうすればよいですか?ASP.NET MVC:他のアクションによって呼び出されるアクション

+1

待っています...ユーザーが最初のアクションURLを入力するだけでしたか? – jfar

+0

私はいくつかのアクション間で共有される最初のアクションについていくつかのバリデーションを行っています。 – ajbeaven

答えて

15

private ActionResult PrivateAction() 
{ 
    return View("SomeView"); 
} 

そして、アクションメソッドからそれを呼び出します。

[ChildActionOnly] 
    public ActionResult Menu() { 
    var menu = GetMenuFromSomewhere(); 
     return PartialView(menu); 
    } 

あなたはその後、いつもとアクションなどRenderAction()とアクション()のHTMLヘルパーを使用することは、URLで呼び出すことはできません。

これはMVC 2の新機能ですが、タグからは既に使用していると思います。

サンプル:http://haacked.com/archive/2009/11/18/aspnetmvc2-render-action.aspx

12

アクションのアクセス修飾子をプライベートにします。それはプライベートな方法ですので、それはアクションメソッドではありませんし、URLで呼び出すことはできません:あなたはChildActionOnlyAttributeでアクションを飾ること

public ActionResult SomeAction() 
{ 
    if(someCondition) 
     return PrivateAction(); 
} 
+0

ああ、もちろん。伝説。 – ajbeaven

0

@Andrasは、AJAXを経由してアクションを呼び出すから[ChildActionOnly]防止とアクションを飾ると、それはいくつかのシナリオで必要です。 @ajbeavenについてあなたは正しく質問しますが、Ajaxの呼び出し状況では、[HttpPost]属性でアクションを装飾するのが最善だと思います。

幸運

関連する問題