2013-08-06 5 views
2

Пожалуйста, мне нужна помощь в диалоговом окне jQuery. Ниже приведен код различных разделов.Кнопка JQuery Dialog для вызова метода действия с параметром

Вот код кнопки выбора ActionLink

Html.ActionLink("Select", "EditExistingReferral", "UnresolvedItems", new { unresolvedReferralId = item.Id }, new { @class = "selectReferral" }) 

Когда эта кнопка «выбрать» нажата, я хочу диалоговое окно для отображения. Вот код для диалога jQuery.

$(function DisplaySystemMessage() { 
    $('.selectReferral').click(function (e) { 
     e.preventDefault(); 
     $('#system-message').dialog({ 
      modal: true, 
      width: 400, 
      height: 'auto', 
      buttons: { 
       "Continue": function() { 
        var href = $('.selectReferral').attr('href'); 
        //alert(href); 

        $(this).dialog('close'); 
       }, 
       "Cancel": function() { 
        $(this).dialog('close'); 
       } 
      } 
     }); 

     //if its referral - open dialog 
     $('#system-message').dialog('open'); 
    }); 
}); 

когда «Продолжить» кнопка диалог щелкнул, я хочу, чтобы следующий метод действия, чтобы быть с параметром apprioriate:

[HttpGet] 
public ActionResult EditExistingReferral(string unresolvedReferralId) { 
    int existingReferralId = int.Parse(unresolvedReferralId); 
     ....  
} 

Пожалуйста, как получить правильный параметр, когда «выберите ', так что я могу передать его методу действия EditExistingReferral при нажатии кнопки диалога «продолжить»?

Заранее благодарен.

ответ

1

Текущий подход:

var href = $('.selectReferral').attr('href');

всегда будет получить первый экземпляр класса selectReferral, который не получит соответствующее значение ID для вас (за исключением случаев, когда вы нажимаете первый экземпляр).

Вместо этого, получить HREF в ссылке, которая просто щелкнула и поместить его в переменный (поместить следующее после e.preventDefault();)

var destinationHref = $(this).attr("href");

, а затем вы можете использовать этот переменный внутри функцию Продолжить ,

Попробуйте использовать Alert, чтобы увидеть, что значения href/id соответствуют ожиданиям.

Надеюсь, что помогает.

+0

Да @ Давид Тансей, он отлично работал! БЛАГОДАРЮ. – Emorse

0

Если вы намерены вернуть новый вид из метода действия, чем

$(location).attr('href', href); 

должны это сделать.

Однако, так как вы уже нажав на ссылку, чтобы вызвать диалоговое окно, более элегантное решение было бы просто позволить событие произойдет, если кнопка Продолжить нажата и выполнять только

e.preventDefault(); 

если Отменить нажата кнопка.

Я должен предупредить вышеупомянутое решение, поскольку это будет зависеть от того, как настроен ваш RouteConfig. Это будет работать, если у вас есть маршрут для извлечения unresolvedReferralId, таких как

{controller}/{action}/{unresolvedReferralId} 
Смежные вопросы