Javascript 如何使用C#和Angular js在视图上显示数据

Javascript 如何使用C#和Angular js在视图上显示数据,javascript,c#,angularjs,Javascript,C#,Angularjs,我有以下控制器: public class UserController : BaseApiController { // GET api/<controller> public string Get() { var currentuser = CurrentUser.Name; return currentuser; } } function ge

我有以下控制器:

  public class UserController : BaseApiController
    {
        // GET api/<controller>
        public string Get()
        {
            var currentuser = CurrentUser.Name;
            return currentuser;
        }

    }
function getSucceeded(data) {
   console.log('data:', data);
   promise.resolve(data);
}

function getFailed(parameters) {
   console.log("failed", parameters);
   promise.reject(parameters);
}
在控制台日志上
console.log('data:',data)我得到该值,为了应用绑定,我必须将该值传递给controller.js中的作用域。为了做到这一点,我用这种方式做了一个控制器

LogName.$inject = ['$scope', 'datacontext']
    function LogName($scope, datacontext) {

        $scope.name =[];

        datacontext.getName().then(function (currentuser) {
            $scope.name = currentuser;

        });
    }
function getSucceeded(data) {
   console.log('data:', data);
   promise.resolve(data);
}

function getFailed(parameters) {
   console.log("failed", parameters);
   promise.reject(parameters);
}
在视图中,我有以下数据绑定代码:

 <h1 ng-controller="LogName" class="title">{{name}}</h1>
function getSucceeded(data) {
   console.log('data:', data);
   promise.resolve(data);
}

function getFailed(parameters) {
   console.log("failed", parameters);
   promise.reject(parameters);
}

视图上未显示任何内容,编译器未到达datacontext。getName

您的MVC控制器返回字符串
公共字符串Get()
,并且您声明
$scope.name=[]作为数组将其更改为
$scope.name=''这应该会有帮助

function getSucceeded(data) {
   console.log('data:', data);
   promise.resolve(data);
}

function getFailed(parameters) {
   console.log("failed", parameters);
   promise.reject(parameters);
}
并将函数getName更改为:

function getName() {
    var deferred = $q.defer();


    $http.get(baseUrl + 'api/user').success(getSucceeded).error(getFailed);
     return deffered.promise;

    function getSucceeded(data) {
        console.log('data:', data);
        //add this
        deferred.resolve(data);
    }

    function getFailed(parameters) {
        console.log("failed", parameters);
        deferred.reject(parameters);;
    }
     return deffered.promise;
}
function getSucceeded(data) {
   console.log('data:', data);
   promise.resolve(data);
}

function getFailed(parameters) {
   console.log("failed", parameters);
   promise.reject(parameters);
}

您永远不会兑现提供名称的承诺。向GetSuccessed函数添加解析,向error函数添加拒绝

function getSucceeded(data) {
   console.log('data:', data);
   promise.resolve(data);
}

function getFailed(parameters) {
   console.log("failed", parameters);
   promise.reject(parameters);
}
这将为等待承诺结果的函数提供数据。

有两个问题:

function getSucceeded(data) {
   console.log('data:', data);
   promise.resolve(data);
}

function getFailed(parameters) {
   console.log("failed", parameters);
   promise.reject(parameters);
}
首先,你没有解决承诺。您需要使用从服务器返回的数据来解决您的承诺

function getSucceeded(data) {
   console.log('data:', data);
   promise.resolve(data);
}

function getFailed(parameters) {
   console.log("failed", parameters);
   promise.reject(parameters);
}
其次,结果实际上位于从服务器返回的数据的
results
属性中。在这里,当您仅检索名称时,应使用以下代码:

function getSucceeded(data) {
   console.log('data:', data);
   promise.resolve(data);
}

function getFailed(parameters) {
   console.log("failed", parameters);
   promise.reject(parameters);
}
function getSucceeded(data) {
   console.log('data:', data);
   deferred.resolve(data.results[0]);
}

cachedPromises.currentuser=promise
这将承诺设置为
currentuser
,稍后您将尝试绑定到它。您在哪里从函数getsucceed(data){console.log('data:',data);}中检索
currentuser的实际值?在这里,我获取值,然后在控制器中检索它,即使我更改了datacontext.getName()。然后(函数(currentuser){$scope.name=currentuser;to datacontext.getName()。然后(函数(数据){$scope.name=data;我得到了相同的结果视图中没有显示任何内容。我猜当我在控制器下执行console.log($scope.name);时是一个空字符串:datacontext.getName()。然后(函数(数据){$scope.name=data;console.log($scope.name);屏幕上没有显示任何内容它的正确方法只是该数据。结果[0],0未定义。因此只有数据是正确的。谢谢。我不明白“0未定义”是什么意思。请详细说明。由于我只返回一个字符串,因此我添加了$scope.name='';和数据。结果[0]不是数组,但data=result->a stringNot appeal。请尝试调试脚本,您将了解我试图解释的内容。