Vo svojej aplikácii chcem vždy pridať nové autoinformácie ku konkrétnej tabuľke musím vybrať meno automobilu a ak bolo toto auto už predané, môžem si vybrať jeho meno vlastníka. Mám teda tento kód pre novú tabuľku riadkov:
<td>
@Html.DropDownListFor(model => model.CarName, new SelectList(ViewBag.Cars, "Id", "Description"), new { @class = "iEdit", id = "cars"})
@Html.ValidationMessageFor(model => model.Description)
</td>
<td data-name="carOwners">
@Html.DropDownListFor(model => model.Owner, new SelectList(ViewBag.Owners, "Id", "Description"), new { @class = "iDisable", disabled = "disabled" })
@Html.ValidationMessageFor(model => model.Side)
</td>
Ako však môžem skontrolovať, či bolo auto predané za vybranú hodnotu na prvom @ Html.DropDownListFor a potom povoliť druhé @ Html.DropDownListFor?
Budovať moje ViewBag.Cars Tento kód som použil v jazyku môjho kontrolóra:
ICollection<Car> newListCars=new Collection<Car>();
newListCars.Add(new Car(0, "BMW", false));
newListCars.Add(new Car(1, "Toyota", true));
ViewBag.Cars= newListCars;
Car.cs:
public class Car
{
public int Id { get; set; }
public string Description { get; set; }
public bool IsSold { get; set; }
public Car(int id, string text, bool sold)
{
Id = id;
Description = text;
IsSold = sold;
}
}
Takže v podstate chcem získať prístup k vybranému súboru ViewBag.Cars.IsSold
odpovede:
0 pre odpoveď č. 1Namiesto použitia dropdownlistfor
, môžete vytvoriť svoj vlastný rozbaľovací zoznam vykonaním niečoho takého:
<select name="CarName" class="iEdit" id="cars">
@foreach(Car car in ViewBag.Cars)
{
<option value="@car.Id" data-issold="@(car.IsSold ? "true" : "false")">@car.Description</option>
}
</select>
Potom môžete použiť atribút údajov vybranej možnosti takto (jQuery):
var selected = $("#cars").find("option:selected");
var isSold = selected.data("issold");