2015-10-06 4 views
1

У меня проблема при попытке включить управление загрузкой MVC. Элемент управления загрузкой изначально отключен. Я хочу, чтобы элемент управления загрузкой включался, когда пользователь выбирает параметр в CheckBoxList. UploadControl не позволяет изменять его включенное состояние на стороне клиента, но как это сделать. Можете ли вы мне помочь и дать мне пример, как сделать это с помощью обратной передачи или иным образом.Как включить управление загрузкой MVC devexpress на стороне клиента

ответ

0

Место UploadControl внутри CallbackPanel.

@Html.DevExpress().CallbackPanel(settings => 
{ 
    settings.Name = "CallbackPanel"; 
    settings.CallbackRouteValues = new { Controller = "Home", Action = "CallbackPanelPartial" }; 
    // other settings 
    settings.SetContent(() => 
    { 
     using (Html.BeginForm("UploadControlUpload", "Home", FormMethod.Post)) 
     { 
      Html.DevExpress().UploadControl(s => 
     { 
      s.Name = "UploadControl"; 
      s.CallbackRouteValues = new { Controller = "Home", Action = "UploadControlUpload" }; 
      // other settings 
      s.Enabled = (bool)ViewData["UPEnabled"]; 
     }).Render(); 
     } 
    }); 
}).GetHtml() 

Мы сохраним переменную, которая укажет, включена ли функция UploadControl в ViewData. Итак, я получаю его значение на частичном представлении CallbackPanel. На наш взгляд, мы будем оказывать CallbackPanel следующим образом:

@Html.Action("CallbackPanelPartial", new { CPEnabled = false }) 

И наш метод контроллера для обработки обратных вызовов к CallbackPanel является:

public ActionResult CallbackPanelPartial(bool CPEnabled) { 
    ViewData["UPEnabled"] = CPEnabled; 
    return PartialView("_CallbackPanelPartial"); 
} 

Когда вы проверить CheckBox, отправить обратный вызов CallbackPanel, чтобы включить UploadControl. Для этого обработайте the CheckBox CheckedChanged client side event.

@Html.DevExpress().CheckBox(settings => 
{ 
    // other settings 
    settings.Properties.ClientSideEvents.CheckedChanged = "function (s, e) { CallbackPanel.PerformCallback({CPEnabled: true}); }"; 
}).GetHtml() 
Смежные вопросы