2016-04-04 21 views
0

私は、カスタムControlKeyを使用してMVC(NugetのChristoc.com DNN 8 MVCモジュールテンプレートに基づいて)を使用して簡単なDNNモジュールを作成しました。このカスタムControlKeyの目的は、特定のMVCアクションを呼び出すことです。この例では、私はこのControlKey "DoIt"と呼ぶでしょう。DNNモジュールのアクセス許可 - スーパーユーザーのみ?

だから、私は.dnnファイルにControlKeyを定義します。

<moduleControl> 
    <controlKey>DoIt</controlKey> 
    <controlSrc>MyApp.Modules.TestModule.Controllers/DoIt/DoIt.mvc</controlSrc> 
    <supportsPartialRendering>False</supportsPartialRendering> 
    <controlTitle>DoIt</controlTitle> 
    <controlType>View</controlType> 
    <iconFile /> 
    <helpUrl /> 
    <viewOrder>0</viewOrder> 
    <supportsPopUps>True</supportsPopUps> 
</moduleControl> 

モジュールのビューだけなのでようNavigateURLを使用してフォーマットされたカスタムControlKeyへのリンク、含まれています

http://dnndev.me/TestPage/tabid/89/ctl/DoIt//mid/450/Default.aspx

スーパーユーザアカウントとしてログインすると、このリンクが動作し、DoItアクションが正しく実行されます。 しかし、管理者でなくてもスーパー以外のアカウントとしてログインすると、アクセス拒否のメッセージが表示されます。

私はモジュールとページのアクセス許可を調整しようとしましたが(ページかモジュール自体から継承されていますが)、SuperUser以外のアカウントではアクセスできません。

私には何が欠けていますか?このカスタムコントロールキーの権限をどこかに設定する必要はありますか? どの権限が不足しているか調べる方法はありますか?

答えて

1

MVCコントローラ(DnnController)の名前DoItControllerにDoIt()という名前のアクションメソッドとIndex()(または同様のもの)というデフォルトのビューアクションがあることを前提としています。

デフォルトビュー(Index.cshtml)からDoItアクションにリンクするには、MVC Urlヘルパーを使用してみてください。

<a href="@Url.Action("DoIt", "DoIt", new {ctl = "DoIt", itemId = item.ItemId})">Do It!</a> 

Url.Actionが引数として取ります

  • アクション名(例:ドイト)
  • コントローラ名(例:ドイト)
  • routeValues(すなわち:CTL = [コントロールキー]、[otherQS引数])

このようなレンダリングHREFルックス:

http://801.dnndev.me/TestPage/ctl/DoIt/mid/437/controller/DoIt/action/DoIt

関連する問題