如何将字符串值发送到函数(ng-click)

时间:2016-09-12 10:04:42

标签: angularjs

我有一个非常简单的问题;

这是我的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 =一个范围变量,顺便说一下,在表单元素中添加对象形式的数据工作正常,所以在对象中传递字符串不是问题,只是传递一个字符串,而不是整数到一个方法似乎不起作用

1 个答案:

答案 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);