2015-04-12 71 views
0

我想要发布一个字符串列表和guid从一些angularjs到我的控制器。 我已经成功地创建了一个解决方案,我可以将列表发布到控制器,但我不知道如何添加guid($ scope.CategoryId)。 我尝试了许多不同的设置,但大部分时间如果我改变它从来没有达到控制器中的方法,当我点击按钮。 所有帮助非常感谢!解析一个列表和guid从角度到控制器

我的观点:

<form> 
    <textarea class="form-control auto-input-field" rows="10" cols="80" id="autoGenerateInputField" ng-model="fighterList" ng-list="/\n/" /> 
    <input class="btn btn-primary" type="submit" ng-click="GenerateTournamentTree()" value="Generer kamptræ" /> 
</form> 

我angularj:

$scope.GenerateTournamentTree = function(){ 
    var stringOfFighters = new Array(); 
    var categoryId = $scope.CategoryId; 
    stringOfFighters = $scope.fighterList; 
    var postData = { fighters: stringOfFighters }; 

    $.ajax({ 
     type: "POST", 
     url: "/Api/Match/GenerateTournamentTree", 
     contentType: 'application/json; charset=utf-8', 
     data: JSON.stringify(stringOfFighters), 
     success: function (data) { 
      alert(data.Result); 
     }, 
     dataType: "json", 
     traditional: true 
    }); 
} 

我的控制器:

[Route("api/Match/GenerateTournamentTree")] 
    public IHttpActionResult GenerateTournamentTree(List<String> fighters) 
    { 
     fighters.Shuffle(); 
     var nodeTree = InsertNode(new TreeNode(), fighters); 
     var matches = new List<MatchRecord>(); 
     GenerateMatch(matches, nodeTree); 
     foreach(var match in matches) 
     { 
      match.CategoryId = new Guid("425d750e-56bd-412c-8a48-38c2fbe5b24c"); 
      match.EventId = 18; 
     } 
     db.Matches.AddRange(matches); 
     try 
     { 
      db.SaveChanges(); 
     } 
     catch (DbUpdateException) 
     {    
      throw;    
     } 
     return Json(new { Result = fighters }); 
    } 

回答

1

你应该创建一个GenerateTournamentTree方法接受的模型作为参数。该模型将保存属性'fighters'和'categoryId'以与传递的数据进行映射。

在你的控制器所在的项目中应该有一个名为'Models'的文件夹。例如,创建一个名为TournamentBindingModel的新类。类应保持您所期望的性能 - 在此之后,你可以在你的控制器方法的签名更改为

public IHttpActionResult GenerateTournamentTree(TournamentBindingModel model) 
    { 
     ... 
    } 

该模型的属性应该由被传递的数据进行映射>战机的categoryId

public class TournamentBindingModel 
    { 
     public List<string> Fighters { get; set; } 

     public string CategoryId { get; set; } 
    } 

从请求,你应该能够访问它们,如model.Fightersmodel.CategoryId(解析类​​别字符串guid)。

+0

我不得不承认,我在这一切都很新。你能举个例子吗? –

+0

我更新了我的答案。 :) –

+0

非常感谢马丁。我现在对如何解决这个问题有了更好的想法。 :) –