我有一个非常简单的问题;
这是我的HTML;
<button ng-click="projectTypeController.deleteProjectType(pt.Code)">X</button>
我的功能在我的控制器中:
self.deleteProjectType = function (projectTypeCode) {
$http.post('http://localhost:49165/Service1.svc/projecttypes/delete/', projectTypeCode)
.then(getProjectTypes)
.then(function (response) {
});
};
我的网络服务中的代码:
[OperationContract]
[WebInvoke(Method = "POST", UriTemplate = "ProjectTypes/Delete/", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
void DeleteProjectType(string projectTypeCode);
只要'pt.Code'是数字,这就完全正常,但只要它是一个字符串就会导致HTTP 400 Bad Request。所以我认为我对deleteProjectType(pt.Code)
部分做错了。
我试图寻找将字符串传递给方法的示例,但我找不到任何东西......
pt.Code =一个范围变量,顺便说一下,在表单元素中添加对象形式的数据工作正常,所以在对象中传递字符串不是问题,只是传递一个字符串,而不是整数到一个方法似乎不起作用答案 0 :(得分:0)
您需要将参数格式化为有效的json。 为此,您可以使用JSON.stringify()。
在方法
中实现这一点self.deleteProjectType = function (projectTypeCode) {
$http.post('http://localhost:49165/Service1.svc/projecttypes/delete/', JSON.stringify(projectTypeCode))
.then(getProjectTypes)
.then(function (response) {
});
};
我更喜欢使用对象而不是仅仅将值作为字符串发送。 如果您在任何时候需要扩展主体,那么您只需要向对象添加更多字段,而不是修改函数调用或服务方法。 这是一个如何做到这一点的例子
self.deleteProjectType = function (projectTypeCode) {
var data = { code: projectTypeCode};
$http.post('http://localhost:49165/Service1.svc/projecttypes/delete/', JSON.stringify(data))
.then(getProjectTypes)
.then(function (response) {
});
};
创建类服务器端
Public class ProjectTypeDTO
{
public string code { get; set; }
}
在服务方法中添加类作为参数,您就是gtg
[OperationContract]
[WebInvoke(Method = "POST", UriTemplate = "ProjectTypes/Delete/", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
void DeleteProjectType(ProjectTypeDTO pt);