【发布时间】:2016-08-28 16:08:45
【问题描述】:
我是 WebApi 的新手,现在我有两个这样的 httpPost 方法
[HttpPost]
public List<YellowPages.Person> AddPersonDetails(YellowPages.Person person)
{
Repository.Repository.personsList.Add(person);
return Repository.Repository.personsList;
}
第二种方法是
[HttpPost]
public List<YellowPages.City> getRelevantCity(string stateID)
{
return new Repository.YellowPages.City().getCity()
.Where(x => x.StateID ==stateID).ToList();
}
每当我调用 getRelevantCity 方法时,都会调用 AddPersonDetails 方法,我相信这与 REST 架构有关。 现在我的问题是我该如何处理这种情况。我可以在 WebApiConfig.cs 文件中做些什么并添加约束吗?如果是,如何处理我正在使用的模型类型的约束。 谢谢。
更新 1
按照建议,我更改了删除属性的方法,如下所示
public List<YellowPages.Person> AddPersonDetails(YellowPages.Person person)
{
Repository.Repository.personsList.Add(person);
return Repository.Repository.personsList;
}
public List<YellowPages.City> getRelevantCity(string stateID)
{
return new Repository.YellowPages.City().getCity().Where(x => x.StateID == stateID).ToList();
}
我的ajax调用是这样的
$('#StateID').change(function () {
$.ajax({
type: 'POST',
url: '/api/shoppingCart/getRelevantCity',
ContentType: 'application/json',
data: { 'stateID': $('#StateID').val() },
dataType: 'json',
success: function (returnData) {
var grid = '';
$.each(returnData, function (i, d) {
grid = grid + createDom(d);
});
$('#result').empty().append(
grid
);
},
error: function (xhr, ajaxOptions, thrownError) {
alert('error');
}
});
});
$('#btnAjax').click(function (e) {
debugger;
e.preventDefault();
var d = { 'PersonName': $('#PersonName').val(), 'gender': $('#gender').prop('checked', true).val(), 'StreetAddress': $('#StreetAddress').val(), 'StateID': $("#StateID option:selected").text(), 'Pincode': $('#Pincode').val() };
$.ajax({
type: 'POST',
url: '/api/shoppingCart/AddPersonDetails',
ContentType: 'application/json',
data: d,
dataType: 'json',
success: function (returnData) {
var grid = '';
$.each(returnData, function (i, d) {
grid = grid + createDom(d);
});
$('#result').empty().append(
grid
);
},
error: function (xhr, ajaxOptions, thrownError) {
alert('error');
}
});
});
无论我进行哪个ajax调用,第一个方法都会被调用,你能帮我处理一下吗?
更新 2
我的问题很简单
假设我的 webApi 中有 4 个 GET 方法,那么我该如何处理 webApi,以便我可以实现所有 4 GET 方法
【问题讨论】:
-
@CodeCaster 我的问题是如何在 MapHttpRoute 方法中为我的模型和字符串添加约束。可以为int和string添加约束,但是如何为模型添加约束,请帮助我理解。
-
我不确定你的意思。您的意思是您希望根据发布的属性名称进行路由吗?然后你需要属性路由,就像在副本中解释的那样。
-
@CodeCaster 我有两个 post 方法,现在一个接受字符串作为参数,另一个接受我的模型作为参数,我该如何处理这种情况,谢谢
-
你cannot trivially do that,只需使用属性路由(
/YourController/AddPerson和/YourController/GetCity)。无论如何,后者应该是 GET。
标签: asp.net-mvc asp.net-web-api asp.net-web-api-routing