После того, как я осознал, что я не могу реально сохранить состояния флажков на javascript (с разных машин), я пытался заставить его работать на стороне сервера.
Что я делаю с этим enum:
namespace namespace
{
[Flags]
public enum prop: uint
{
/// <summary>
///
/// </summary>
a= 1,
/// <summary>
///
/// </summary>
b= 2,
/// <summary>
///
/// </summary>
c= 4
}
}
И объявлено так в модели:
public int prop
{
get { return prop; }
set { prop= value; }
}
Сделайте так, чтобы оно работало как флажки, поэтому, если вы нажмете первый и последний, значение будет отправлено как 5 и т. д. вкл.
это мой контроллер:
public IActionResult action(int id)
{
var model = something
model.class.class.Select(x => x.prop);
return View(model);
}
На мой взгляд, я напечатал как:
foreach(var a in Model)
@Html.EditorFor(x = > a.prop)
Это шаблон редактора :
@model Enum
@{
var modelType = @Model.GetType();
}
@foreach (var name in Enum.GetNames(modelType))
{
var value = Convert.ToInt32(Enum.Parse(modelType, name));
if (value != 0)
{
var isChecked = ((Convert.ToInt32(Model) & value) == value) ? "checked" : null;
<input type="checkbox" name="@ViewData.TemplateInfo.HtmlFieldPrefix" value="@name" class="prop" checked="@isChecked" data-valueCheck="@value" />
@name
<br />
}
}
Итак, как я могу сделать, если я отправил 7 на сервер, распечатать чек. выбран? , Я уже выполнил часть js, поэтому она всегда сохраняет правильное значение в объекте js, который я отправляю на сервер, примерно так:
[
{
"id": 00000000,
"prop": 1,
nestedobjectetc...
...
}
]
Так что, если я получу "prop": 1
, то по крайней мере один флажок должен отображаться как выбранный.
Так что я нахожусь в куче и пытаюсь что-то делать, но не знаю, как работать с перечислениями ... некоторые рекомендации ?? Если это не достаточно ясно, пожалуйста, дайте мне знать, большое спасибо, qiqke