2013-07-17 4 views
1

То, что я хочу, чтобы добавить объект направляется значение, когда пользователь отправляет форму (Ajax.BeginForm)Добавить объект routedValue в диалоговом окне Подтверждение Ajax.BeginForm

В зависимости от того, что выбирает пользователь в функции ConfirmDone, Я хочу добавить целое число (SaveOption)

Но я действительно не знаю, как это сделать.

Вызывается функция confirmdone, но это все, мое действие контроллера не вызвано. Мне, наверное, нужно что-то вернуть?

Некоторые Код: начало формы

@using (Ajax.BeginForm("CreateFunctiebeschrijvingPartial", "Functiebeschrijving", new  AjaxOptions { UpdateTargetId = "Functiebeschrijving", OnBegin = "return ConfirmDone()", OnSuccess = "handleSuccess" }, new {@id = frmID})) 
{ 

Функция confirmdone

function ConfirmDone() { 
    if (confirm("This form saves default as Concept, would you like to save it as completed? 1 = Completed, 2 = Concept")) { 
     //option 1: save as completed 
     $('#frmID').attr("SaveOption", 1);       
    } 
    else { 
     //Option 2: save as concept 
    } 
} 

Начало моего действия контроллера

// 
// POST: /FunctieBeschrijving/CreateFunctiebeschrijvingPartial 
[HttpPost] 
public ActionResult CreateFunctiebeschrijvingPartial(NieuweFunctiebeschrijvingViewModel nfvm, int SaveOption) 
{ 

Когда я не использую подтверждать функция, все опубликовано так, как должно быть!

+0

Какой элемент имеет идентификатор 'frmID'? – haim770

+0

Форма (ajax.beginform) –

+0

'

' атрибут не отправляется как часть данных формы, лучше использовать ' 'то в вашей' ConfirmDone' функции '$ ('# saveOption'). Val (1);' – haim770

ответ

1
function addDataToUrl(url, name, value){ 
    var sep = url.indexOf('?') === -1 ? '?' : '&'; 
    return url + sep + name + '=' + value; 
} 

function ConfirmDone() { 
    var form = document.getElementById('frmID'); 
    if (confirm("This form saves default as Concept, would you like to save it as completed? 1 = Completed, 2 = Concept")) { 
     //option 1: save as completed 
     form.setAttribute('action', 
     addDataToUrl(form.getAttribute('action'), 'SaveOption', '1'));     
    } 
    else { 
     // Option 2: save as concept 
    } 
} 
+0

строка SaveOption имеет значение null в действии контроллера, но хороший URL-адрес, я думаю, это получилось инструменты Google Chrome разработчик:?/Functiebeschrijving/CreateFunctiebeschrijvingPartial Length = 19 & SaveOption = 1 –

+0

@DylanSlabbinck Вы используете неправильную перегрузку Ajax.BeginForm, написать: '@using (Ajax.BeginForm ("CreateFunctiebeschrijvingPartial", "Functiebeschrijving", NULL, новый AjaxOptions {UpdateTargetId = "Functiebeschrijving", OnBegin = "return ConfirmDone()", OnSuccess = "handleSuccess"}, новый {@id = frmID})) ' – karaxuna

+0

Вы правы, но все же SaveOption имеет значение –