У меня есть следующие данные в моем проектеКак получить элементы DropDownList при отправке?
МОДЕЛЬ
public class AnimalModels
{
public string AnimalId { get; set; }
public List<SelectListItem> AnimalList { get; set; }
}
VIEW
@model DropDownList.Models.AnimalModels
@{
ViewBag.Title = "Index";
}
<h2>Index</h2>
<script src="@Url.Content("~/Scripts/Animal/Index.js")" type="text/javascript"></script>
@using (Html.BeginForm())
{
@Html.ValidationSummary(true)
<div>
<fieldset>
<div>@Html.LabelFor(model => model.AnimalId)</div>
<div>@Html.DropDownListFor(model => model.AnimalId, Model.AnimalList)</div>
<div>@Html.ValidationMessageFor(model => model.AnimalId)</div>
</fieldset>
<input type="submit" name="Submit" value="Submit" />
</div>
}
CONTROLLER
public class AnimalController : Controller
{
//
// GET: /Animal/
public ActionResult Index()
{
AnimalModels model = new AnimalModels();
model.AnimalList = new List<SelectListItem>();
return View(model);
}
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Index(AnimalModels model)
{
//TODO: get animal list
model.AnimalList = new List<SelectListItem>();
return View(model);
}
}
index.js
//[B]Document ready
$(document).ready(function() {
//Populate ddl using ajax (jquery)
$.ajax({
url: 'Resources/Animals.xml', // name of file with our data - link has been renamed
dataType: 'xml', // type of file we will be reading
success: parse, // name of function to call when done reading file
error: showError // name of function to call when failed to read
});
});
//[E]Document ready
function parse(xmlDoc) {
var options = new Array();
$(xmlDoc).find("ITEMS").each(function() {
$(this).find("ITEM").each(function() {
var optionValue = $(this).find('VALUE').text();
var optionLabel = $(this).find('TEXT').text();
options.push('<option value="' + optionValue + '">' + optionLabel + '</option>');
});
});
options = options.join('');
$('#AnimalId').append(options);
}
var showError = function (xhr, status, err) {
alert("Error loading file Animals.xml in Resources folder.\n" + xhr.status + " " + err + ".");
};
Animals.xml
<?xml version="1.0" encoding="ISO-8859-1"?>
<ITEMS>
<ITEM>
<VALUE>-1</VALUE>
<TEXT></TEXT>
</ITEM>
<ITEM>
<VALUE>0</VALUE>
<TEXT>Tiger</TEXT>
</ITEM>
<ITEM>
<VALUE>1</VALUE>
<TEXT>Lion</TEXT>
</ITEM>
</ITEMS>
мой вопрос, есть ли способ, чтобы получить все выпадающие элементы списка, когда я ударил кнопку отправить? , поскольку значение всегда нуль, когда я пытался отладить это
Как я понимаю, вы заполнить выпадающую коллекцию пунктов на стороне клиента и хочу получить его обратно на стороне сервера после отправки ? В этом случае ответ - нет, вы не можете этого сделать. Dropdownlist (фактически элемент HTML SELECT) отправляет на сервер только значение выбранного элемента. –
Что я должен изменить, чтобы получить все элементы ddl? не могли бы вы привести мне пример? – CodeGhoib
Почему вы не загружаете элементы DDL на стороне сервера? AnimalModels model = new AnimalModels(); model.AnimalList = GetItemsFromResource(); –