Я новичок в Angular, но имею опыт работы с ASP.NET MVC, поэтому основные понятия здесь не новы для меня. Я пытаюсь передать простой текстовый параметр моему контроллеру WebAPI как слово «парк», тогда контроллер WebAPI выполнит запрос linq и вернет результаты в Angular, который отобразит эти результаты с помощью ng-repeat в виде. Он отлично работает в случае, когда я возвращаю все строки из базы данных, но когда я пытаюсь передать параметр ключевого слова, ничего не происходит. Каков самый простой способ передать параметр из Angular в контроллер WebAPI для использования там в запросе linq базы данных? Спасибо.Параметры URL-адреса AngularJS WebAPI
AngularJS код:
var PhrasierApp = angular.module("Phrasier", ["ngRoute", "ngResource"]).
config(function ($routeProvider) {
$routeProvider.
when('/', { controller: DialogCtrl, templateUrl: 'dialog.html' }).
otherwise({ redirectTo: '/' });
});
PhrasierApp.factory('Phrase', function ($resource) {
return $resource('/api/Phrase/:Keyword1', { Keyword1: 'park' }, { update: { method: 'PUT' } });
});
var DialogCtrl = function ($scope, $location, Phrase) {
$scope.phraseResults = Phrase.query();
};
Web API контроллера:
public IQueryable<Phrase> GetPhrases(string Keyword1)
{
var model = from p in db.Phrases where p.Text.Contains(Keyword1) select p;
return model;
}
Частичный вид:
<table class="table">
<thead>
<tr>
<th></th>
</tr>
</thead>
<tbody>
<tr ng-repeat="phraseResult in phraseResults">
<td>{{phraseResult.Text}}</td>
</tr>
</tbody>
</table>
Я бы проверить [OData] (http://www.odata.org/) Если вы хотите сделать что-то подобное. – calebboyd
В параметре действия вашего контроллера веб-API попробуйте поместить атрибут FromBody (например, public IQueryable GetPhrases ([FromBody] string Keyword1)) –