I have a string property that corresponds have some checkbox values. I want to use an enum. Enum values want to store on that string property.
My property is in the Model class. It has many properties. I just put only two properties and enum:
public class Client_CIPEnergyCrisis
{
[Display(Name = "What type of assistance are you seeking?")]
public string AssistanceType { get; set; }
[NotMapped]
public List<int> AssistanceTypeList { get; set; }
}
public enum AssistanceTypes
{
[Display(Name = "Assistance with Disconnection")]
AssistanceWithDisconnection = 1,
[Display(Name = "Utility Pole/ Gas line Hookup or Deposit")]
UtilityGaslineHookup = 2,
[Display(Name = "Emergency Heating Fuel")]
EmergencyHeatingFuel = 3,
[Display(Name = "System Repair or Replacement")]
SystemRepair = 4,
[Display(Name = "Anything else ?")]
Anything = 5,
}
This is my view page. That is a partial view. It's used for Insert and Update data.
@model Client_CIPEnergyCrisis
<div><label asp-for="AssistanceType" class="form-label"></label></div>
@foreach (var assistanceType in Enum.GetValues<AssistanceTypes>())
{
<div class="col-md-4 pt-2">
<input class="form-check-input" type="checkbox" value="@((int)assistanceType)" name="AssistanceTypeList">
<label class="form-check-label" for="flexCheckChecked"> @Html.DisplayFor(model => assistanceType) </label>
</div>
}
This is my Add Razor Page add.cshtml page. Here have multiple partial views. We can ignore it. We are passed the needed model.
@page
@model AddCIPEnergyCrisisModel
@{
ViewData["Title"] = "CIP Energy Crisis";
}
<partial name="_DataFormTitlePartial" model='new string("New CIP Energy Crisis")' />
<div class="card dataForm mb-3">
<form method="post">
<partial name="_FamilyIncomeInfoPartial" model="@Model.FamilyIncomeList" />
<partial name="_CIPEnergyCrisisPartial" model="@Model.CIPEnergyCrisis" />
<partial name="_SaveCancelPartial" model="@Model.CCInfo" />
</form>
</div>**strong text**
This is add.cshtml.cs Page.
[BindProperty]
public List<int> AssistanceTypeList { get; set; }
[BindProperty]
public Client_CIPEnergyCrisis CIPEnergyCrisis { get; set; }
public IActionResult OnPost()
{ var selectedAssistantType = string.Join(",", AssistanceTypeList);
CIPEnergyCrisis.AssistanceType = selectedAssistantType;
}
Add feature work well. But when I go to edit. then I face the problem.
This is my Edit Razor Page edit.cshtml.cs page. Here have multiple partial views. We can ignore it. We are passed the needed model.
public void OnGet(int Id)
{
try
{
CIPEnergyCrisis = new Client_CIPEnergyCrisis();
var data = serviceManager.GetClient_CIPEnergyCrisis(Id);
var selectedAssistantType = data.AssistanceType;
CIPEnergyCrisis.AssistanceTypeList = selectedAssistantType
.Split(",")
.Select(int.Parse)
.ToList();
}
}
Maybe I need a if condition in partial page. But I can't do that. may you help me please....