2016-09-14 2 views
1

Я использую angularjs с Asp.net MVC, чтобы проверить доступ к записи для папки для пользователей. Если у пользователя есть доступ на запись, я хочу показать div, у которого есть ссылка. У меня есть Div в SampleView.Html, и у меня есть метод, который проверяет доступ пользователя к записи в MVC-контроллере под названием ReportController.cs. Каким будет код для Angular Controller, который я могу использовать для передачи значения от контроллера MVC до Angularjs View?Как передать значение из MVC-контроллера в Angular .html View

SampleView.html:

<div id="DivPackerTemplate" class="cp-btn cp-btn-primary pull-right"><a ng-href="\\Samplefolder" >Edit Template</a></div> 

ReportController.cs:

public void AccessPackerPlanTemplate(string folderPath) 
     {   
      string path = @"\\sample"; 
       string NtAccountName = @"sampleuser"; 

       DirectoryInfo di = new DirectoryInfo(path); 
       DirectorySecurity acl = di.GetAccessControl(AccessControlSections.All); 
       AuthorizationRuleCollection rules = acl.GetAccessRules(true, true, typeof(NTAccount)); 

       //Go through the rules returned from the DirectorySecurity 
       foreach (AuthorizationRule rule in rules) 
       { 
        //If we find one that matches the identity we are looking for 
        if (rule.IdentityReference.Value.Equals(NtAccountName, StringComparison.CurrentCultureIgnoreCase)) 
        { 
         //Cast to a FileSystemAccessRule to check for access rights 
         if ((((FileSystemAccessRule)rule).FileSystemRights & FileSystemRights.WriteData) > 0) 
         { 
          //Show the link 
          { 
           DivPackerTemplate.Visible = false; \\This is not working is there a alternative for this? 
          } 
         } 
        } 
       } 

ответ

0

Если вы используете угловой вы должны сделать SampleView.Html директиву и ввести услугу, которая может вызывать ваш метод AccessPackerPlanTemplate MVC чтобы получить информацию или еще лучше создать службу углового правила, которая может обернуть, и все ваши логики правил и результаты кеша.

Шаг 1: создать директиву обернуть DivPackerTemplate Директива документ ->https://docs.angularjs.org/guide/directive

Шага 2: создать угловой сервис, который оборачивает свои вызовы правил логики (правила должны быть в WebAPI, но вы можете использовать регулярный Mvc действие если необходимо) ->https://docs.angularjs.org/guide/services

Затем вы просто подключаете их, вводя свою службу правил в директиву и используя ее для заполнения данных шаблона, кеширование является необязательным.

В угловом мире вы не «пройти значение в» с сервера в цели, ваши мнения используют угловые услуги «вытаскивать ценности» в мнениях/директивы

Я не угловой эксперт, но что-то вдоль эти строки опускают реализацию правил правил ($ rules), поскольку угловые службы довольно легко создавать.

angular.module('moduleA', []) 
.controller('SimpleDirectiveController', ['$rules','$scope',function($rules,$scope) { 
$scope.show = function() { 
    return $rules.yourmethodtogetrulesresult();//for this case return either 'hidden' or 'visible' 
}; }]) 
.directive('PackerTemplate', function() { 
    return { 
    template: function($scope) { 
     var templatevar = '<a ng-href="\\Samplefolder" visibility=\'[XX]\'>Edit Template</a>' 
     return templatevar.replace('[XX]',$scope.show()) 
     }  
    }; 
}); 
+0

Можете ли вы дать мне ссылку на любой образец, который я могу использовать? – Programmermid

0

Из вашего приложения MVC вы можете вернуть представление asp. Внутри зрения вы можете использовать угловую контроллер, как это:

@model dynamic 

@{ 
    Layout = ""; 
} 

<div ng-controller="PackerListController as vm"> 
    <h1 class="page-header"> 
    <button ng-click="vm.editTemplate()">Edit Template</button> 
    </h1> 
</div> 

Смежные вопросы