Я хочу вызвать функцию 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;
}
Попробуйте использовать веб-службы или службы wcf для размещения логики и использования их с помощью метода http get в контроллере
Вы можете вызывать только функции 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);
Надеюсь, это сработает!
Я предлагаю вам следующий подход: попробуйте использовать комбинацию 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();
Надеюсь, это сработает для вас.