Как я могу вызвать функцию angular.js из C # в ASP.net

0

Я хочу вызвать функцию binddata() с угловым кодом или С#. Возможно это или нет в asp.net.

$scope.bindAllData = function () {
        $scope.getFundedRatio.investors = $scope.investors;
        $scope.getFundedRatio.taxRates = $scope.taxRateInfo;
        $scope.getFundedRatio.incomeAssets = $scope.incomeAssetInfo;
        $scope.getFundedRatio.futureSavings = $scope.futureSavingInfo;
        $scope.getFundedRatio.spendingGoals = $scope.spendingGoalsInfo;
        $scope.getFundedRatio.portfolioAssets = $scope.portfolioAssetsInfo;
        $scope.getFundedRatio.privateAssets = $scope.privateAssetInfo;
}
  • 0
    Это странное требование.
  • 0
    ..И ответ нет. $ Сфера просто , чтобы связать контроллер и вид, и , следовательно , такое имя области. Я не угловой разработчик, но логика говорит, что он не может быть открыт за пределами контроллера, если он не участвует в наследовании. Доступ через C # исключен.
Показать ещё 5 комментариев
Теги:
function

3 ответа

0

Попробуйте использовать веб-службы или службы wcf для размещения логики и использования их с помощью метода http get в контроллере

0

Вы можете вызывать только функции JavaScript из С# codebehind, которые доступны непосредственно в переменной окна. Поскольку $ scope доступен только внутри контроллера, он не будет доступен непосредственно объекту окна. Однако вы можете создать элемент выбора в DOM - например, дать любому элементу селектор id (элемент должен быть в той же области, для которой вы хотите вызвать метод области.). Теперь вы можете получить объем элемента, используя: Шаблон HTML: Создайте фиктивный div с идентификатором. Этот div должен присутствовать в той же области контроллера.

<div id='div1'></div>

Вы можете получить доступ к области этого элемента вне вашего javascript контроллера, используя:

var elementScope =    angular.element(document.getElementById('div1')).scope()

Теперь вы сможете получить доступ к любому методу или свойству области.

elementScope.bindAllData();

С С# codebehind вы можете напрямую вызвать код javascript, используя:

Page.ClientScript.RegisterStartupScript(this.GetType(),"CallMyScopeFunction","angular.element(document.getElementById('div1')).scope().bindAllData()",true);

Надеюсь, это сработает!

  • 0
    спасибо большое рахул малу
-1

Я предлагаю вам следующий подход: попробуйте использовать комбинацию SignalR и AngularJS. Прежде всего, установите SignalR Nuget-package.

Install-Package Microsoft.AspNet.SignalR

После этого создайте концентратор с широковещательным сообщением SignalR:

public class SampleHub : Hub
{
    public void Send(string message)
    {
        // Call the broadcastMessage method to update clients.
        Clients.All.broadcastMessage(message);
    }
}

В любом из ваших бэкэнд-методов ASP.NET вы можете использовать следующий фрагмент, чтобы уведомить ваш метод Angular:

var context = GlobalHost.ConnectionManager.GetHubContext<SampleHub>();
context.Clients.All.broadcastMessage("BindAllData");

Вставьте это в свой скрипт-часть интерфейса:

<script type="text/javascript" src="assets/libs/jquery-2.1.4.min.js"></script>
<script type="text/javascript" src="assets/libs/jquery.signalR.min.js"></script>
<script src="/signalr/hubs"></script>

На стороне клиента используйте следующий код:

var sampleHub = jQuery.connection.sampleHub;
sampleHub.client.broadcastMessage = function (message) {
     Console.log(message); // Will output "BindAllData"
     // Your BindAllData-code here.
}; 
jQuery.connection.hub.start();

Надеюсь, это сработает для вас.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню