ASP.net MVC не может получить доступ к данным ajax в функции контроллера
Я использую 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 параметра, а в URL-адресе ajax этих параметров не было.. но когда я добавляю параметры в URL-адрес ajax, это означает, что параметры равны статическому значению и не могут измениться
что я должен делать?
1 ответ
Вам необходимо создать класс для параметров действия. Вот что говорит доку ASP.NET MVC:
По умолчанию веб-API использует следующие правила для привязки параметров:
- Если параметр является "простым" типом, Web API пытается получить значение из URI. К простым типам относятся типы примитивов.NET (int, bool, double и т. Д.), А также TimeSpan, DateTime, Guid, decimal и string, а также любой тип с преобразователем типов, который может преобразовывать строки. (Подробнее о преобразователях типов позже.)
- Для сложных типов 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
Надеюсь, это поможет.