2015-01-14 4 views
0

У меня есть код, где, когда пользователь нажимает на значок «x», вызывается метод действия CancelPendingQuote, проходящий по запросу в requestUrl. Метод действия попадает, но значение не входит в параметр requestIdEncrypted, поэтому параметр метода действия имеет нулевое значение.Не могу отправить значение обратно к действию Метод using @ Html.BeginForm

В ожидании Список

@using (@Html.BeginForm("CancelPendingQuote", "Quote", new { requestIdEncrypted = request.RequestIdEncrypted }, FormMethod.Get, new { enctype = "multipart/form-data", @id = "removeRequest" })) 
{ 
    <span data-bind="click: function(data, event){ userWarning_Dialog('#removeRequest_dialog', event); }"> 

    <img src="~/Areas/Waybill/Content/Images/Normal_Size/posta_delete_20px.png" /> 
    <img src="~/Areas/Waybill/Content/Images/Normal_Size/posta_delete_mouseover_20px.png" style="display:none" /> 

</span> 
} 

функция Нокаут userWarning, что отправляет форму. Это вызывается при щелчке изображения «x».

removeRequest: function (model, event) 
    { 
     var form = $("#removeRequest").closest("form"); 

     $(form).submit().error(function (messageObj) { 
      // if fail return error message 
      $(".information-bar").trigger("ErrorText", messageObj.message);    
     }); 
     $("#removeRequest_dialog").dialog("close"); 

    }, 

метод Действие

[Authorize] 
     public ActionResult CancelPendingQuote(string requestIdEncrypted) 
    { 
     int requestId = Convert.ToInt16(Decryption.Decrypt(requestIdEncrypted)); 

     _controllerContent.QuoteService.Value.CancelPendingQuoteRequest(requestId); 
     return RedirectToAction("Dashboard"); 
    } 

Любые идеи?

+0

Почему ваш метод формы Get? он должен быть FormMethod.Post. ваше действие меняет модель! –

ответ

0

Здесь есть пара вещей. Во-первых, вам нужно убедиться, что имена объекта, которые были отправлены на сервер, совпадают с параметром контроллера. Например, если вы отправляете этот объект Javascript до:

{ requestIdEncrypted: "exampleString" } 

или

{ requestIdEncrypted: viewModel.requestId() } 

, то ваш метод контроллер должен принимать входной сигнал.

Во-вторых, из вашего кода мне не ясно, как данные публикуются. $(form).submit().error(function (messageObj) немного запутанно: эта линия отвечает за отправку формы? Является ли это функцией, которая будет вызвана, если представление формы не увенчалось успехом? Работает? Это not clear to me what you're trying to do with this. Возможно, вам придется выяснить другой способ привязать обработчик ошибок к форме, если это то, что вы пытаетесь сделать, - если это не работает нормально.

Смежные вопросы