MVC3 Razor условная нагрузка - PullRequest
       1

MVC3 Razor условная нагрузка

0 голосов
/ 20 сентября 2011

Я хочу реализовать следующее: Поле со списком / DropDownListFor с именем «target» в представлении. Он содержит (например) A и B в качестве выбора. В том же виде у меня есть еще один комбинированный список, который называется «средний». Его содержание зависит от выбранной цели, например: - если target = "A", в выпадающем списке "medium" будут отображаться 1 и 2 в качестве выбора. - если target = "B", в выпадающем списке "medium" будут отображаться 3 и 4 как выбор.

Я успешно реализовал комбинированный список "target", но я не знаю, как реализовать комбинированный список "medium", связанный с "target". Если я не ошибаюсь, логика должна быть такой: получить выбранный таргетид -> найти все средства, связанные с таргетидом -> заполнить комбинированный список «средний» результатом.

Вот фрагмент моего текущего представления (выпадающий список "target"):

<div class="editor-label">
     @Html.LabelFor(model => model.TargetId)
</div>
<div class="editor-field">
     @Html.DropDownListFor(model => model.TargetId, (ViewData["targets"] as SelectList).MakeSelection(Model.TargetId))
</div>

Спасибо заранее.

1 Ответ

2 голосов
/ 20 сентября 2011

Вы можете использовать javascript OnChange первой капли, чтобы выполнить вызов ajax, чтобы получить значения, основанные на выборе A или B.

Затем с ответом JSon, полученным от контроллера, вы заполняете раскрывающийся список.«Средний»

в файле JS сделать примерно так:

$(document).ready(function () {
  $("#target").change(function () { GetMediumValues("#target", "#medium"); });
});

function ClearDrop(objSource) {
   $(objSource).empty();
}

function GetMediumValues(objSource, objDest) {
var url = '/mySite/GetMediumValues/';
$.getJSON(url, { id: $(objSource).val() }, function (data) {
    ClearDrop(objDest);
    $.each(data, function (index, optionData) {
        $(objDest).append("<option value='" + optionData.Value + "'>" + optionData.Text + "</option>");
    });
});

}

Находясь в контроллере

public ActionResult GetMediumValues(string id)
{
  int myId = 0;
  int.TryParse(id, out myId);
  var select = new SelectList(repository.GetMediumValues(myId), "Id", "Name");
  return Json(select, JsonRequestBehavior.AllowGet); //allow get needed to allow get calls 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...