2017-01-27 8 views
1

Как частичный вид создаваемого представления, который должен быть пустым, обновляется новыми данными, когда пользователь выбирает значение из списка, значение которого выпадает?Как вызвать и обновить частичный вид в бритве MVC 5?

У меня есть куча вещей, перечисленных на доске объявлений, а также другие, и это просто сводится к большим количеством ошибок. Я просто не могу поверить, что в webforms так легко работать, что это трудно сделать в MVC.

Я пробовал это как в Chrome, так и в IE и получал ошибки, поэтому я потерялся. У меня есть что-то подобное для частичного просмотра в общей папке:

<table cellpadding="1" border="1"> 
    .... // table header 
    @foreach (SYSTEMX.Models.VUE_ISSUE_LIST item in ViewBag.IssuesList) 
    { 
     <tr> 
      <td>@item.Issue</td> 
     </tr> 
    } 
</table> 

Создать файл cshtml имеет это:

<div class="col-sm-6"> 
    <div class="form-horizontal" style="display:none" id="PV_IssueList"> 
     @{ Html.RenderAction("UpdateIssuesList"); } 
    </div> 
</div> 

В контроллере есть код похож на этот

[HttpGet] 
public ActionResult UpdateIssuesList(int? VID) 
{ 
    ViewBag.IssuesList = GetIssuesList(VID); 
    return PartialView("UpdateIssuesList"); 
} 

GetIssuesList (VID) выглядит очень похоже на это, и он находится в контроллере приложения mvc

private List<VUE_ISSUE_LIST> GetIssuesList(int? VID) 
{ 
    return db.VUE_ISSUE_LIST_.Where(i => i.ID == VID).ToList(); 
} 

Я получаю эту ошибку. Я не знаю, что здесь происходит.

Частичный просмотр 'UpdateIssuesList' не найден или механизм просмотра не поддерживает найденные местоположения. Поиск в следующих местах: ~/Views/CONTROLLERX/UpdateIssuesList.aspx
~/Views/CONTROLLERX/UpdateIssuesList.ascx
~/Просмотров/Shared/UpdateIssuesList.aspx
~/Views/Shared/UpdateIssuesList.ascx
~/Просмотров/CONTROLLERX/UpdateIssuesList.cshtml
~/Просмотров/CONTROLLERX/UpdateIssuesList.vbhtml
~/Просмотров/Shared/UpdateIssuesList.cshtml
~/Просмотров/Shared/UpdateIssuesList.vbhtml

Пользователь форум отвечал что-то вроде этого в качестве решения, и я предполагаю, что он работал на него, как он положил зеленую галочку, но он не работает для меня вообще:

Updating PartialView mvc 4

также попытался это:

refresh a partial view in mvc

Также прочитайте это, но это так технично, что я не следую за всем этим.

https://www.simple-talk.com/dotnet/asp-net/tips-and-tricks-about-razor-partial-views/

+1

Вам необходимо использовать ajax для динамического обновления представления (точно так же, как обе ссылки, которые вы включили, показывают). И ошибка очевидна - вы не создали представление 'UpdateIssuesList.cshtml' –

+0

Здравствуйте, SM ... что вы имеете в виду? Вы не создали представление UpdateIssueList.cshtml? Что делает это мнение? Нужно ли заменять частичные представления новыми представлениями? Я не понимаю, как все это работает. То, что я хотел бы иметь, заключается в том, что когда пользователь нажимает на раскрывающийся список идентификатор из выпадающего списка в виде, который создается из списка, а идентификатор действует как фильтр из запроса. Эти данные обновляются с частичной точки зрения. Я действительно не понимаю, что они делают в ссылках. Я надеялся, что первоначальный искатель увидит этот вопрос и скажет мне, как он заработал. –

+0

hi @Stephen Muecke не очевидно, поскольку я не знаю, что представляет UpdateIssuesList.cshtml. У меня есть частичный вид, называемый _IssuesListPartial.cshtml. Я полагаю, что на основе темы форума у ​​человека есть действие контроллера под названием UpdateIssuesList, да? Я думаю, что цель, которую я пытаюсь сделать, - это то, что mvc не может сделать, поскольку эта вещь является довольно стандартным в веб-формах, потому что это был просто элемент управления, который вы можете сделать видимым. Я предполагаю, что с mvc, не имеющим элементов управления, он может только заполнить список один раз и не обновлять его, поскольку он не может быть обновлен. Спасибо, в любом случае. –

ответ

2

Я закончил с использованием какой-то под названием 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(); 
        } 
       }); 
+1

Это правильный способ делать ваши действия динамически. RenderAction загружает только первый контент в первый раз. Тем не менее, я бы использовал done() вместо успеха и позаботился о неудачном обратном вызове. $ .ajax ({ ... // ВАШ УСПЕХ параметры при, за исключением }) сделано (функция() {PartialView $ ('# PV_WidgetList') HTML (PartialView).. $ ('# PV_WidgetList') .show(); }). fail (function (xhr, textStatus) { // FAIL CONTROLS }). всегда (функция() { // ЧТО ВЫ ВСЕГДА ХОТИТЕ СДЕЛАТЬ }); –

0

Достаточно ли этого?

$("#PV_IssueList").load("/controllerx/UpdateIssuesList?VID=1"); 

Когда вам нужно обновить, вызовите эту Jquery линию ... или положить его внутри функции, или любое событие .. например onclick='$("#PV_IssueList").load("/controllerx/UpdateIssuesList?VID=1");'

+0

Hi @Performer, спасибо за ответ.Но я не думаю, что mvc может делать то, что мне нужно с грустью, и мне просто нужно отказаться от этой функции, поскольку мне нужен список для обновления новыми данными на основе того, что выбрано в раскрывающемся списке. Кажется, я смутился. У меня есть вопрос о VID = 1, который вы добавили в ответ. VID = 1 будет просто отправлять идентификатор 1 правильно? Как он узнает, что мне нужно, чтобы он передавал идентификатор из раскрывающегося списка. Если он жестко закодирован со значением 1? –

+0

Также еще один вопрос об этом для исполнителя или любого, кто знает ... в этом утверждении, что часть UpdateIssuesList этого оператора представляет в контексте приведенного ниже утверждения, должно быть, это частичное представление, сформированное с помощью подчеркивания ?: onclick = ' $ ("# PV_IssueList") нагрузка ("/ controllerx/UpdateIssuesList ВИД = 1?"). Спасибо –

+1

Для первой части это могут быть ваши страницы не имеют того же имени, что и метод в контроллере. Для достижения части частичного просмотра в MVC 5 этот подход выглядит правильно для меня. Попробуйте эту ссылку, насколько это возможно. Дайте мне знать: http://stackoverflow.com/questions/38501116/how-can-i-refresh-just-a-partial-view-in-its-view –