Получить @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; }
}
866   4  

4 ответов:

Используйте строго типизированные помощники, которые привязываются к вашей модели. Если ваша модель содержит свойство CustomCarsList

public 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

    Ничего не найдено.