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

Надеюсь, это поможет.

Другие вопросы по тегам