Получить @Html.Управления dropdownlist выбранное значение
Я пытаюсь получить выбранное значение из @Html.Выпадающий список в ASP .NET MVC 5 (C#). У меня есть этот выпадающий список в поле зрения:
@Html.DropDownList("CustomCarsList", ViewBag.CustomCars as SelectList)
ViewBag.CustomCars определяется в UnregisteredSectionController в public ActionResult
UnregisteredSection() метод как:
string selectString = "Select * from CustomCars where OwnerId ='" + User.Identity.GetUserId() +"'";
ViewBag.CustomCars = new SelectList(db.Garage.SqlQuery(selectString), "CustomCarID", "CustomCarDescription", selectedInt);
Я не хочу использовать JavaScript для этого, и я пробовал много учебников, но безуспешно. Выбранные значения должны быть переданы в качестве параметров для уже созданного функция.
EDIT
это код DrowDownList в представлении UnregisteredSection:
@using (Html.BeginForm(FormMethod.Post)) {
@Html.DropDownList("selectedCustomCar", (SelectList)ViewBag.CustomCars);
<button type="submit">Submit</button>
}
это код в UnregisteredSectionController:
public ActionResult UnregisteredSection(string dropdownlistReturnValue)
{
string selectString = "Select * from CustomCars where OwnerId ='" + User.Identity.GetUserId() +"'";
//To pass list of Departments from the controller, store them in ViewBag
ViewBag.CustomCars = new SelectList(db.Garage.SqlQuery(selectString), "CustomCarID", "CustomCarDescription", selectedInt);
//toTest
System.Diagnostics.Debug.WriteLine(dropdownlistReturnValue);
return View();
}
и, наконец, это код модели:
public class CustomCar
{
public int CustomCarID { get; set; }
public string Name { get; set; }
public int TankCapacity { get; set; }
public string FuelType { get; set; }
public int Maxoutput { get; set; }
public decimal FuelOutside { get; set; }
public decimal FuelTown { get; set; }
public decimal FuelMix { get; set; }
public string OwnerId { get; set; }
public int selectedCustomCar { get; set; } //new
public string CustomCarDescription
{
get
{
return string.Format("{0}, {1}kW, {2}", Name, Maxoutput, FuelType);
}
}
}
public class DefaultConnection : DbContext
{
public DbSet<CustomCar> Garage { get; set; }
}
4 ответов:
Используйте строго типизированные помощники, которые привязываются к вашей модели. Если ваша модель содержит свойство
CustomCarsListpublic class CustomCar { .... public int CustomCarsList { get; set; } // assumes `CustomCarID` is typeof int }Затем в представлении
@model CustomCar @using (Html.BeginForm()) { .... @Html.DropDownListFor(m => m.CustomCarsList, (SelectList)ViewBag.CustomCars) <button type="submit">Submit</button> }И в контроллере
public ActionResult UnregisteredSection(string dropdownlistReturnValue) // dont know what dropdownlistReturnValue is doing? { CustomCar model = new CustomCar(); model.CustomCarsList = // some value ViewBag.CustomCars = new SelectList(db.Garage.SqlQuery(selectString), "CustomCarID", "CustomCarDescription"); // selectedInt is not required return View(model); } [HttpPost] public ActionResult UnregisteredSection(CustomCar model) { // model.CustomCarsList contains the value of the selected option }Затем, если значение
CustomCarsListсовпадает со значением одного из значений вашего параметра (определенногоCustomCarID), то будет выбран именно этот параметр, в противном случае будет выбран первый вариант. На обратной стороне сообщения значениеCustomCarsListбудет значением параметра, выбранного пользователем.
Проверьте элемент select, чтобы получить имя тега select. Затем используйте его в параметре post actionResult
[HttpPost] public ActionResult YourServerMethod(string selectname) { }Asp сделает все остальное за вас
Для того, чтобы автоматическая привязка работала,
selectedCustomCar(имя выбранного входа) иdropdownlistReturnValue(имя параметра действия контроллера) должны иметь одно и то же имя (это по соглашению).Таким образом, вы должны либо изменить имя select на
dropdownlistReturnValue:@Html.DropDownList("dropdownlistReturnValue", ViewBag.CustomCars as SelectList)Или измените имя параметра:
public ActionResult UnregisteredSection(string selectedCustomCar)В любом случае после обратной передачи ваш параметр будет содержать выбранное значение из выпадающего списка выбора.
После того, как я мучился над одной и той же проблемой в течение двух дней, наконец, я получил свой ответ здесь.
Http://silverlightpractice.blogspot.com/2014/03/how-to-get-htmldropdownlistfor-selected.html
Я бы предложил,
Не сохраняйте свойство model как "обязательное" для модели представления, чтобы ваше состояние модели всегда было допустимым. Когда вы получите действие на контроллере, заполните свойство вручную.
В вашем контроллере вы можете просто вызвать метод ниже, чтобы найти выбранное значение из выпадающего списка.
Строка sCar = запрос.Форма ["CustomCarsList"];
Надеюсь, это кому-нибудь поможет!
Comments