2
В моем приложении MVC 4 я хочу заполнить Html.LisboxFor с результатом Ajax.Как заполнить Html.Listbox с результатом Ajax с помощью mvc 4
Мой Вид: @using (Html.BeginForm ("UpdatePriority", "Приоритет", FormMethod.Post)) {
@Html.Hidden("myListBoxValuesValues")
<div class="row">
<div class="col-md-2">
<label>FA:</label>
@Html.ListBoxFor(m => m.FA, new MultiSelectList(@Model.FA), new { @class = "lbx_FA" })
</div>
<div class="col-md-1">
<input id="btnAdd" type="button" value=" > " onclick="addItem();" />
</div>
<div class="col-md-2">
<label>CEID list:</label>
@Html.ListBoxFor(model => model.CEIDs, new MultiSelectList(Model.CEIDs), new { @class = "lbx_CEIDs" })
</div>
...and so on..
Мой мой контроллер функции (возвращает строку модели JSon):
public string getCeidPerFA(string FA)
{
return unitOfWork.ToolRequiredRepository.getCEIDsPerFA_Scenario(DAL.UnitOfWork.Scenario, FA);
}
функция репозиторий:
internal string getCEIDsPerFA_Scenario(string scenario, string FA)
{
//create the result list (FAs):
List<string> FAs = FA.Split(',').ToList();
var CEIDs = from row in context.ToolRequireds
where row.Scenario == scenario && FAs.Contains(row.FA)
select row.CEID;
List<string> lst = CEIDs.Distinct().ToList();
//create Json Result:
List<SelectListItem> items = new List<SelectListItem>();
foreach (var ceid in lst)
{
items.Add(new SelectListItem { Text = ceid, Value = ceid });
}
return Json.Encode(items);
}
Мой текст:
function addItem() {
var result = "";
var x = document.getElementById("FA");
for (var i = 0; i < x.options.length; i++) {
if (x.options[i].selected == true) {
result += x.options[i].value + ",";
}
}
result = result.substring(0, result.length - 1);
$.ajax({
url: "@(Url.Action("getCeidPerFA", "CeidSelection"))",
data: { "FA": result },
success: function (data) {
if (data.length > 0) {
JSON.pa
$("#CEIDs").append(JSON.parse(data));
}
else
alert("No Result");
},
error: function (xhr) {
alert("Something went wrong, please try again");
}
});
}
Мой код неправильный, но я понятия не имею, как это сделать. Любая помощь будет очень оценена.
я изменил мою функцию, возвращающую JsonResult. Я создаю JsonResult следующим образом: JsonResult js = new JsonResult() {Data = items, JsonRequestBehavior = JsonRequestBehavior.AllowGet}; Затем я использую ваш код внутри успеха ajax. теперь все, что я вижу в списке, это: «[object Object]». Я не вижу реальных значений Json. – user3087881
, который говорит мне, что у вас есть элемент списка, но не значение. Если вы посмотрите на объект, используя firebug, вы сможете определить, какое имя вам нужно посмотреть. должно быть что-то вроде value.key и value.value, любые имена, которые у вас есть в этих полях –
Thx! оно работает. Я использовал ваш совет и с помощью хром-инструментов для разработчиков удалось отладить Json и внести корректировки прорепа. – user3087881