Jquery ASP.net MVC可以';t访问控制器函数中的ajax数据

Jquery ASP.net MVC可以';t访问控制器函数中的ajax数据,jquery,asp.net-web-api,asp.net-ajax,x-editable,Jquery,Asp.net Web Api,Asp.net Ajax,X Editable,我使用x-editable并尝试将日期发布到我的控制器 x-可编辑代码为 项目 现在,我尝试在以下控制器中访问发布的数据 Public Class UpdateEffortItemsController Inherits ApiController Public Function save(pk As Integer, value As String) As String Dim db As New RA_SQLEntities Dim row

我使用x-editable并尝试将日期发布到我的控制器

x-可编辑代码为

项目

现在,我尝试在以下控制器中访问发布的数据

Public Class UpdateEffortItemsController
    Inherits ApiController
    Public Function save(pk As Integer, value As String) As String

        Dim db As New RA_SQLEntities

        Dim row As Ra_activity_log
        row = db.Ra_activity_log.Where(Function(XX) XX.Activity_log_key = pk).SingleOrDefault()
        row.Comment = value
        db.SaveChanges()

        Return "done"

    End Function

End Class    
我得到了下面的错误

{“Message”:“未找到与请求URI匹配的HTTP资源”http://localhost:58250/api/updateeffortitems/save“.”,“MessageDetail”:“在与请求匹配的控制器“UpdateExportItems”上未找到任何操作。”}

我知道控制器函数必须有2个参数,而ajax url没有这些参数。。但是当我将参数添加到ajax url时,这意味着参数等于静态值,并且不能更改


我该怎么办?

您需要为动作参数创建一个类。下面是ASP.NET MVC doku所说的:

默认情况下,Web API使用以下规则绑定参数:

  • 如果参数是“简单”类型,Web API将尝试从URI获取值。简单类型包括.NET基本类型(int, bool、double等),加上TimeSpan、DateTime、Guid、decimal, 和字符串,再加上任何具有可从 一串。(稍后将详细介绍类型转换器。)
  • 对于复杂类型,Web API尝试使用媒体类型格式化程序从消息体读取值
代码可能如下所示(我不是VB程序员):


希望这会有所帮助。

您需要将上面的[HttpPost]添加到该方法中。所以它可以在post请求时调用。
Public Class XEditablePost
    Public Property Pk() As Integer
    Public Property Value() As String
End Class

....

Public Function save(payload As XEditablePost) As String
    ....
End Function