Przepraszam, ale większość moich wyszukiwań przenosi mnie do starych kodów MVC. Każda pomoc zostanie doceniona.W MVC 6, jak kodować listę checkbox w widoku i przekazywać sprawdzone wartości do kontrolera?
W MVC 6 z pomocników Tag, jak można zakodować zbiór wyboru:
- Używaj znacznika pomocnika na etykiecie tak kliknięcie będzie przełączać sprawdzana wartość
- Save (Bind?) Sprawdzonej wartości do nieruchomości IsOptionSelected
- Przełóż tych sprawdzonych wartości z powrotem do kontrolera po kliknięciu Prześlij
?
Udało mi się poprawnie wyświetlić pola wyboru z etykietami, ale nie wiem, jak przekazać sprawdzone wartości z powrotem do kontrolera za pośrednictwem modelu. W tej chwili wartości IsOptionSelected wracają jako fałszywe.
Udało mi się również zrobić pomocnika html dla pracy z etykietą, ale nie dla pomocnika tagu. Mogę również kodować te wszystkie złe, więc wszelkie wskazówki pomogą!
Oto co mam do tej pory:
Wyświetlacz:
Podmiot:
public class PhoneOption
{
public bool IsOptionSelected { get; set; } = false;
public int OptionId { get; set; }
public string OptionName { get; set; }
}
Model:
[Display(Name = "Phone Options")]
public IEnumerable<PhoneOption> PhoneOptions { get; set; }
. . . .
PhoneOptions = repository.GetPhoneOptions();
Repozytorium:
public IEnumerable<PhoneOption> GetPhoneOptions()
{
IEnumerable<PhoneOption> options = new[]
{
new PhoneOption { OptionId = 1, OptionName = "Phone Case", IsOptionSelected = false },
new PhoneOption { OptionId = 2, OptionName = "Screen Protector", IsOptionSelected = false },
new PhoneOption { OptionId = 3, OptionName = "Car Charger", IsOptionSelected = false },
new PhoneOption { OptionId = 4, OptionName = "Extra Cable", IsOptionSelected = false }
};
return options;
}
Widok:
<div class="form-group">
<label class="control-label">Phone Options</label>
<div>
@foreach (var option in Model.PhoneOptions)
{
<div>
@{ string cbId = "PhoneOption_" + @option.OptionId; }
<input [email protected] type="checkbox" [email protected] [email protected] [email protected] />
@Html.Label(@cbId.ToString(), @option.OptionName)
@*This is causing invalid operation exception*@
@*<label [email protected]()>@option.OptionName</label>*@
<span [email protected] class="text-danger" role="alert"></span>
</div>
}
</div>
</div>
Z góry dzięki!
Przypuszczam, że asp-for jest używany w niewłaściwy sposób. Zmień dane wejściowe na [email protected] na asp-for = "IsOptionSelected", które upewnią się, że jest ono powiązane z właściwością właściwą w PhoneOption. To samo w etykiecie [email protected]() jest błędne. Sprawdź tutorial tutaj dla pomocników tagów .http: //www.davepaquette.com/archive/2015/05/18/mvc6-select-tag -helper.aspx –
Dzięki za sugestię, ale zmiana na asp-for = "IsOptionSelected" powoduje błąd składni, ponieważ nie znajduje się w głównym modelu. Jest częścią opcji Model.PhoneOption opcji iteracji foreach. asp-for = option.IsOptionSelected również nie będzie działać. I tak, już wcześniej czytałem samouczek, ale nie obejmował on listy wyboru, jak to, co próbuję zrobić. –
Ahh Mam to. Sprawdź, czy to pomaga http://stackoverflow.com/questions/15375800/model-binding-to-a-list-mvc-4 –