在AngulrJs路由中,避免调用mvc动作方法调用两次

时间:2017-02-20 13:28:57

标签: angularjs asp.net-mvc-4

我现在将详细解释这个问题。我必须使用控制器中的$ http方法将一些参数或对象传递给MVC Action方法三。但是当我点击Route Three链接时,Home Controller中的三个操作方法调用两次首先是templateUrl,然后是控制器的$ http方法。我想先调用控制器然后加载视图(templateUrl)。请让我知道解决方案

角色代码:

    app.controller('routeparamtest', function($scope, $routeParams,$http) {  
        $http({
            url: "/Home/three",
            method: "GET",
            params: { id:20}
        });

    });


    var configFunction = function ($routeProvider) {
        $routeProvider.

            .when('/routeThree', {
                templateUrl: 'Home/Three',
                controller: 'routeparamtest'
            });
    }

MVC控制器代码:

public class HomeController : Controller
{

    public ActionResult Three(int id = 1)
    {
            return View();
    }
}

HTML代码:

 <ul>
      <li><a href="#/routeThree" > Route Three</a></li> 
    </ul>  <div ng-view>  

Three.cshtml代码:

some html code goes here

1 个答案:

答案 0 :(得分:0)

如果要传递多个参数,则只需创建如下对象即可。

var data = [{
        Id: "1",
        Value: "apple"
    },
    {
        Id: "2",
        Value: "banana"
    }];

并将其传递给anuglarjs,如下所示。

this.doSth = function(data){
    var response = $http({
        method: "post",
        url: "Home/DoSth",
        data: data
        //or data: JSON.stringify(data) ??
        });
    return response;
};

在MVC Controller中获取数据只需创建一个类

public class  MyClass
{
  public int Id { get; set;}
  public string Value { get; set;}
}

使用方法中的列表

public string DoSth(List<MyClass> data)
{
    //access your data
    //data[0].Id,data[0].Value or by any other way
}

希望这会对你有所帮助。 感谢