Обновить свойство модели из контроллера в Asp.Net MVC - PullRequest
0 голосов
/ 18 июня 2019

У меня есть HTML dropdownList, который в настоящее время показывает данные из модели. Теперь для некоторых операций я хочу изменить содержимое dropdownList. Я думаю, что если я обновлю модель, то это также отразится на просмотре. Ниже мой код для модели

ViewModel

public class CaseAssignmentRuleSetViewModel
    {
        public CaseAssignmentRuleSetViewModel()
        {

        }
       public int id { get; set; }
       public string name { get; set; }
       public Dictionary<string, string> AssignmentUsers { get; set; }
    }

Так что здесь, в viewModel, это dictionary, который является источником для dropdownList в поле зрения, как показано ниже.

Посмотреть

<select name="assignmentTeam" class="form-control case-assignment-use-type-value2" placeholder="Select a User">


            @foreach (string key in Model.AssignmentUsers.Keys)
            {
                <option value="@key">@Model.AssignmentUsers[key]</option>
            }
        </select>

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

Контроллер

 [HttpPost, Route("CaseAssignmentRuleSet/ListofAssignees", Name = "ListofAssignees")]
        public List<string> SetListofAssignees(string [] listOfAssignedroles)
        {
            CaseAssignmentRuleViewModel caseAssignmentRuleViewModel = new CaseAssignmentRuleViewModel();
            List<string> listOfAssignees = new List<string>();
            if (listOfAssignedroles!= null)
            {
                listOfAssignees = new List<string>(listOfAssignedroles);
            }

            return listOfAssignees;             

        }

Как я могу обновить мои dropdownList в представлении с новым списком предметов?

1 Ответ

1 голос
/ 18 июня 2019

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

Если это так, то в вашей готовой функции вызова ajax очистите текущий список, затем переберите новый список, добавив новые параметры: (псевдокод)

$.ajax( '/CaseAssignmentRuleSet/ListofAssignee' )
 .done(function(data) {

   //get the select element, you should really add an ID to the element to select instead of name but whatever
   var $el = $('[name=assignmentTeam]');

   //clear the current select list options
   $el.empty();

   //iterate through your new options and add them to the select list
   $.each(data, function(key,value) {
    $el.append($("<option></option>").attr("value", value).text(value));
 });
}).fail(function() {alert( "error" );}).always(function() {//alert( "complete" );});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...