我使用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时意味着参数等于静态值并且无法改变
我该怎么办?
答案 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
希望有所帮助。