2017-01-04 20 views
0

В моем контроллере у меня есть следующий ViewBag который трудно закодированные значения для выпадающего спискаГотовые значения ViewBag от контроллера?

public ActionResult Order(string id, string printRequest) 
{        
this.ViewBag.PartialReasons = new List<string>() {" ", "Insufficient stock", "Suspended", "Retired", "Ordered Incorrectly", "Unable to deliver" }; 
} 

Я хочу сделать то, что когда-то из выпадающего значения «Невозможно доставить» выбрано, то есть появляется предупреждение POP с надписью «HELLO EVERYONE», тогда пользователь должен иметь возможность щелкнуть и сохранить, моя существующая функция сохранения onclick ниже,

в двух словах просто хочет прочитать значение из суммирования контроллера.

$('.pcss-save').click(function() { 
     if (CheckSerialNumbersForQuantity()) { 
      if (CheckReasons()) { //If Ordered incrrectly 
       $('#genericmodal').find(".pcss-submit-genericmodal").unbind("click"); 
       $('#genericmodal').find(".modal-title").html("Confirmation"); 
       $('#genericmodal').find(".modal-body").html("This order will be Cancelled"); 
       $('#genericmodal').modal('show'); 
       $('#genericmodal').find(".pcss-submit-genericmodal").click(function() { 
        $("#orderform").submit(); 
       }); 
      } else { 
       $("#orderform").submit(); 
      } 
     } 
    }); 

ответ

0

По вашему мнению, вы должны быть в состоянии назвать свой ViewBag непосредственно с помощью @ViewBag.PartialReasons и когда двигатель Бритвы делает скрипт, он будет использовать эти значения в @ViewBag.PartialReasons.

Возможно, вы захотите сделать что-то подобное.

$('#yourDropDownID').on('change', function(){ 
     if(CheckReasons()){ 

      var genericModal = $('#genericmodal'); //Avoids rescanning the dom. 
      genericModal.find(".pcss-submit-genericmodal").unbind("click"); 
      genericModal.find(".modal-title").html("Confirmation"); 
      genericModal.find(".modal-body").html("This order will be Cancelled"); 
      genericModal.modal('show'); 
      genericModal.find(".pcss-submit-genericmodal").click(function() { 
       $("#orderform").submit(); 
     } 
    }); 

И ваши причины проверки могут быть примерно такими. Это открыто для интерпретации.

function CheckReasons(){ 
    var myReason = @String.Join(ViewBag.PartialReasons.ToArray()); 

    //loop and figure it out if your reason is selected and return true or false 
} 

Все это было написано с верхней части моей головы, так что, возможно, потребуется немного настройки, но это должно вам начать с того, что вы хотите сделать.

UPDATE Вы не можете получить доступ к ViewBag в своем браузере, поскольку он существует только на стороне сервера. Вам необходимо отобразить скрипт, который выполняет то, что вы хотите на сервере, используя ViewBag. Двигатель Razor будет заполнять вывод из кода C#.

+0

Как читать viewbag в переменной JavaScript, –

+0

Вы не можете получить к нему доступ через клиентскую сторону, вы можете отображать значения, но через движок бритвы. 'function CheckReasons() { var myReason = @ String.Join (ViewBag.PartialReasons.ToArray()); // цикл и выяснить, если ваша причина выбрана и возвращена true или false } ' – ddeamaral

+0

Как это сделать @ destructi6n –

0

Первые несколько вопросов:

  • Как вы загружаются значения Viewbag в раскрывающемся списке?
  • Вы используете вид бритвы?
  • Кажется, вы задаете несколько вопросов, поэтому я собираюсь попробовать и поразить каждого.

Обычно падающие пары являются парами ключ-значение. С Razor просмотров вы можете использовать:

@Html.DropDownList("reasonListID", new SelectList(ViewBag.PartialReasons, "reasonCode", "reasonName")) 

Это предполагает, что объект viewbag список объекта с двумя свойствами reasonCode и reasonName.

Чистые списки строк на самом деле не используются для управления логикой, вы хотите кодифицировать свои потенциальные ценности, чтобы дать вам четкие и простые сравнения. Таким образом, вы можете просто взглянуть на reasonCode и не иметь кода для сравнения вашего значения выбора с «Некоторая длинная строка, которая может не иметь большого значения в коде», например. это, вероятно, будет в вашей функции CheckReasons().

if CheckReasons() == "UD") { 
    showModal("HELLO EVERYONE"); 
} 

легче, чем

if CheckReasons() == "Unable to deliver") { 
    showModal("HELLO EVERYONE"); 
} 

Насколько выскакивают модальный, это выглядит, как вы используете JQuery, так что посмотрим, что ответил на вопрос: MVC3 Razor and Modal popup

+0

в контроллере. У меня есть сумка с жестко закодированными значениями, и я хочу передать эти значения суммирования в предупреждении, то есть присваивать значения viewbag в javascript, а затем сказать, что это что-то значит, а затем предупреждение –