Ссылка на объект не установлена ​​для экземпляра объекта, параметр имеет значение null - PullRequest
1 голос
/ 07 марта 2012

У меня проблемы с передачей аргумента из моего представления моему контроллеру

У меня есть этот фрагмент кода на мой взгляд:

<a class="btn-simple" onclick="submitDetails('Dashboard', 'Cancel', '<%=Model.Data.Id %>', $('form'));">save</a>

и это от моего контроллера:

[HttpPost]
public ActionResult Cancel(string id, FormCollection collection)
{
       var appt = Application.Session.GetObjectFromOid<Appointment>(new ObjectId(id));
}

Я получаю сообщение об ошибке, в котором говорится, что «id» является нулевым, но когда я тестирую Model.Data.Id в представлении, оно не равно null.

И это моя функция submitDetails:

function submitDetails(controller, method, id, form) {
    form.ajaxSubmit({ target: '#itemdetails' });

}

То, что я пытаюсь сделать, это вернуться к моему контроллеру с помощью кнопки в представлении, «[HttpPost]» версии метода, который первоначально вызывал представление

1 Ответ

1 голос
/ 07 марта 2012

Убедитесь, что форма, которую вы отправляете, содержит скрытое поле с идентификатором или передана в качестве параметра строки запроса:

<% using (Html.BeginForm("Dashboard", "Cancel", new { id = Model.Data.Id })) { %>
    ...
<% } %>

или если вы хотите передать динамический URL, вы можете сделать следующее:

<a class="btn-simple" onclick="submitDetails('<%= Url.Action("Dashboard", "Cancel", new { id = Model.Data.Id }) %>', $('form'));">save</a>

, а затем:

function submitDetails(url, form) {
    form.ajaxSubmit({ url: url, target: '#itemdetails' });
}

ОБНОВЛЕНИЕ:

И если вы хотите избежать использования метода submitDetails javascript и иметь привязкукнопка отправки формы:

<% using (Html.BeginForm("Dashboard", "Cancel", new { id = Model.Data.Id })) { %>
    ...

    <button class="btn-simple" type="submit">save</button>
<% } %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...