2017-02-01 14 views
0

может иметь частичный вид на mvc create view, который использует раскрывающийся список, который отправляет значение из раскрывающегося списка функции, которая создает список на основе выбора значения раскрывающегося списка, который затем сохраняется в сумке представления для частичного просмотра .. Можно ли это сделать в mvc, и может ли это быть сделано для создания вида формы mvc?Частичные виды на mvc create view, которые используют выпадающий список для заполнения пакета vew частичного просмотра, возможно ли это в mvc?

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

Но новый Создать вид запись ничего выбрано таким образом, функция списка имеет нулевое значение

частичные виды только для форм, которые имеют данные предварительно заполненные в них?

Update:

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

Я думаю, что я прошу сделать это можно сделать только с помощью webforms, так как mvc может обрабатывать динамические данные, что хорошо. И так как при загрузке страницы выпадающее меню не имеет значения .. список не может быть построен, поэтому есть ошибка с нулевым значением, а также и пустой список, если я жестко кодирую значение в выпадающем списке.

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

Can a Drop Down List Trigger A Partial View To Update on A Create View Form In mvc?

Null view bag and partial view

Populating Partial Views using mvc

Updating a Partial View in MVC 5

Благодаря

+1

это звучит так, как будто вам нужно загрузить частичный вид с помощью вызова ajax. Я googled «mvc частичный просмотр ajax» и 2 хороших результата: http://stackoverflow.com/questions/32610270/how-to-render-partial-view-in-mvc5-via-ajax-call-to-a-controller -and-return-html и http://stackoverflow.com/questions/10589787/asp-net-mvc-returning-a-partialview-to-ajax-along-with-another-object –

+0

@MattBodily Привет Мэтт да какой-то один упомянутый ajax ... поскольку я действительно не знаю, что такое ajax или как его использовать. Я не хотел добавлять сторонние дополнения в приложение. Я пытаюсь использовать то, что знаю, и это мешок для представления данных и концепция частичных представлений. Поскольку они тесно связаны с тем, что я знаю, эти вещи называются usercontrols. Использование пользовательских элементов управления, как это было бы очень легко. но не так много в mvc. –

+1

Я настоятельно рекомендую вам заглянуть в jquery и ajax. ссылки, которые я предоставил, показывают, как настроить его. Они являются мощными инструментами и облегчат вашу жизнь при работе с MVC. просто мои 2 цента :) –

ответ

1

Итак, с помощью Matt Bodily Вы можете заполнить частичный вид в представлении создания, вызванном измененным значением в выпадающем списке, используя сумку для просмотра и нечто, называемое Ajax. Вот как я сделал свою работу с кодом.

Первый частичный образец вид кода вам необходимо проверить нулевые данные

_WidgetListPartial

@if (@ViewBag.AList != null) 
    { 
    <table cellpadding="1" border="1"> 
    <tr> 
     <th> 
      Widget Name 
     </th> 
    </tr> 

@foreach (MvcProgramX.Models.LIST_FULL item in @ViewBag.AList) 
    { 
    <tr> 
     <td> 
      @item.WidgetName 
     </td>   
    </tr> 
    } 

    </table> 
    } 

Наполнение ваш вид сумки в контроллере с функцией

private List<DB_LIST_FULL> Get_List(int? VID) 
    { 

     return db.DB_LIST_FULL.Where(i => i.A_ID == VID).ToList(); 
    } 

В вашем Создание контроллера добавьте структуру, подобную этой, используя элемент [HttpGet] , это отправит вам данные и ваш частичный вид на экран placeho lder вас на создание экрана Устройства VID будет ID из вашего выпадающего списка этой функция также отправляет обратно Partial View обратно на создание формы экрана

[HttpGet] 
    public ActionResult UpdatePartialViewList(int? VID) 
    {   

     ViewBag.AList = Get_List(VID); 
     return PartialView("_WidgetListPartial",ViewBag.AList); 


    } 

Я не 100%, если это необходимо, но я добавьте к ActionResult следующее: Создайте форму Id и FormCollection, чтобы я мог прочитать значение из раскрывающегося списка. Снова материал Ajax может заботиться, если он, но на всякий случай, и приложение, похоже, работает с ним.

Это в [HttpPost]

public ActionResult Create(int RES_VID, FormCollection Collection, [Bind(Include = "... other form fields 

Это в [HttpGet] еще раз это тоже может не быть необходимости. Это считывает значение из формы

UpdatePartialViewList(int.Parse(Collection["RES_VID"])); 

на ваш Create View Screen, где вы хотите, чтобы ваш частичный вид для отображения

 <div class="col-sm-6"> 

      <div class="form-horizontal" style="display:none" id="PV_WidgetList"> 

       @{ Html.RenderAction("UpdatePartialViewList");} 



      </div> 
     </div> 

И, наконец, код Ajax за который читает щелчок из выпадающего списка. получить значение выбранного элемента и передать значения обратно ко всему коду контроллера, чтобы построить список и отправить его для обновления частичного представления, и если есть данные, он передает частичное представление с обновлением в форму создания ,

$(document).ready(function() { 
     $('#RES_VID').change(function() 
     { 

      debugger; 

      $.ajax(

       { 
        url: '@Url.Action("UpdatePartialViewList")', 
        type: 'GET', 
        data: { VID: $('#RES_VID').val() }, 

        success: function (partialView) 
        { 
         $('#PV_WidgetList').html(partialView); 
         $('#PV_WidgetList').show(); 
        } 
       }); 

Это многие не лучший способ сделать это, но это аа завершить тестирование ответ, как это работает, и это каждый шаг процесса в надежде, что никто не должен пройти через несколько дней с ужасом на показать, что мне пришлось пройти, чтобы получить что-то, что было изначально основано на ошибках, которые, как я думал, это невозможно сделать в mvc, и мне пришлось бы продолжить приложение в webforms. Еще раз спасибо всем, кто помог мне сформулировать это решение!

0

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

+0

Я не благодарю, что это то, о чем я прошу ... Я хочу взглянуть на смысл строго типизированного. Я добавил более подробные сведения к своему вопросу. Мне просто хотелось, чтобы частичная работа работала над созданной формой, но данные из созданного из них основаны на выпадающем списке, который находится в представлении create, который не имеет значения, поскольку это создает представление добавление новой записи в базу данных. –