ASP.net MVC无法访问控制器函数

时间:2017-01-16 07:04:36

标签: jquery asp.net-web-api asp.net-ajax x-editable

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

x-editable代码

<span class="editable editable-click" title="" data-type="select" data-value="1" data-pk="2" data-url="http://localhost:58250/api/updateeffortitems/save" data-title="Work group" data-source="[{ value: 1, text: 'Project'},{ value: 2, text: 'Service'},{ value: 3, text: 'Process'},{ value: 4, text: 'Training'},{ value: 5, text: 'Others'}]" data-original-title="Project">Project</span>

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

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":"No HTTP resource was found that matches the request URI 'http://localhost:58250/api/updateeffortitems/save'.","MessageDetail":"No action was found on the controller 'UpdateEffortItems' that matches the request."}

我知道控制器功能必须有2个参数并且ajax网址没有这些参数...但是当我将参数添加到ajax url时意味着参数等于静态值并且无法改变

我该怎么办?

1 个答案:

答案 0 :(得分:0)

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

  

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

     
      
  • 如果参数是“简单”类型,Web API会尝试从URI获取值。简单类型包括.NET基元类型(int,   bool,double等等,加上TimeSpan,DateTime,Guid,decimal,   和字符串,以及具有可转换的类型转换器的任何类型   一个字符串。 (稍后将详细介绍类型转换器。)
  •   
  • 对于复杂类型,Web API尝试使用媒体类型格式化程序从邮件正文中读取值。
  •   

代码可能看起来像这样(我不是VB编码器):

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

希望有所帮助。