I have a select list with a multiple attribute and can select multiple options when using control + click but the options won't save to my SQL database. Therefore, when I try to load the selected options only the first one that selected and saved shows. I'm not sure why it's not saving the multiple options selected.
Controller:
public Task<RequestViewModel?> GetRequest( int id, CancellationToken cancellation = default )
{
List<RequestViewModel> reqlist = new();
try
{
using (var conn = ConnectionString.OpenConnection())
{
List<SqlParameter> sqlParameters = new List<Microsoft.Data.SqlClient.SqlParameter>()
{
new SqlParameter( "@RQKey", id )
};
SqlParameter[] parms = sqlParameters.ToArray();
var ds = conn.LoadDataSet( ConnectionString, "GetEquipmentRequest", System.Data.CommandType.StoredProcedure, parms, 360 );
foreach (DataRow r in ds.Tables[ 0 ].Rows)
{
var reqvm = new RequestViewModel();
reqvm.Rqkey = r.Field<int>( "RQKey" );
reqvm.ReqId = r.Field<string>( "Reqid" ) ?? "";
reqvm.RequestDate = r.Field<DateTime?>( "RequestDate" ) ?? DateTime.MinValue;
reqvm.ApprovedBy = r.Field<string>( "ApprovedBy" ) ?? "";
reqvm.ApprovalDate = r.Field<DateTime?>( "ApprovalDate" ) ?? DateTime.MinValue;
reqvm.ServiceType = r.Field<string>( "ServiceType" ) ?? "";
reqvm.Technician = r.Field<string>( "Technician" ) ?? "";
reqvm.CriminalActivity = r.Field<string>( "CriminalActivity" ) ?? "";
reqvm.CaseNum = r.Field<string>( "CaseNum" ) ?? "";
reqvm.DateNeededFrom = r.Field<DateTime?>( "DateNeededFrom" ) ?? DateTime.MinValue;
reqvm.DateNeededTo = r.Field<DateTime?>( "DateNeededTo" ) ?? DateTime.MinValue;
reqvm.DateIssued = r.Field<DateTime?>( "DateIssued" ) ?? DateTime.MinValue;
reqvm.DateDueBack = r.Field<DateTime?>( "DateDueBack" ) ?? DateTime.MinValue;
reqvm.ExtendApprovalDate = r.Field<DateTime?>( "ExtendApprovalDate" ) ?? DateTime.MinValue;
reqvm.DateExtendedUntil = r.Field<DateTime?>( "DateExtendedUntil" ) ?? DateTime.MinValue;
reqvm.DateAgencyReceived = r.Field<DateTime?>( "DateAgencyReceived" ) ?? DateTime.MinValue;
reqvm.DateAgencyReturned = r.Field<DateTime?>( "DateAgencyReturned" ) ?? DateTime.MinValue;
reqvm.DateReturnReceived = r.Field<DateTime?>( "DateReturnReceived" ) ?? DateTime.MinValue;
reqvm.Comments = r.Field<string>( "Comments" ) ?? "";
reqvm.Disapproval = r.Field<string>( "Disapproval" ) ?? "";
reqvm.ResultsDate = r.Field<DateTime?>( "ResultsDate" ) ?? DateTime.MinValue;
reqvm.CourtDate = r.Field<DateTime?>( "CourtDate" ) ?? DateTime.MinValue;
reqvm.Results = r.Field<string>( "Results" ) ?? "";
reqvm.AudioEnhancements = r.Field<int?>( "audioenhancements" );
reqvm.ReqsToCourtroom = r.Field<int?>( "ReqsToCourtroom" );
reqvm.Convictions = r.Field<int?>( "Convictions" );
reqvm.VideoEnhancements = r.Field<int?>( "videoenhancements" );
reqvm.RetrievedAv = r.Field<int?>( "RetrievedAv" );
reqvm.IndividualsLocated = r.Field<int?>( "IndividualsLocated" );
reqvm.CasesResolved = r.Field<int?>( "CasesResolved" );
reqvm.MediumsAnalyzed = r.Field<int?>( "MediumsAnalyzed" );
reqvm.CasesProsecuted = r.Field<int?>( "CasesProsecuted" );
reqvm.VolumeDataAnalyzedGb = r.Field<decimal?>( "VolumeDataAnalyzedGb" );
reqvm.Consultations = r.Field<int?>( "Consultations" );
reqvm.Officer = r.Field<string>( "Officer" ) ?? "";
reqvm.AgName = r.Field<string>( "ag_Name" ) ?? "";
reqvm.Address1 = r.Field<string>( "Address1" ) ?? "";
reqvm.Address2 = r.Field<string>( "Address2" ) ?? "";
reqvm.Address3 = r.Field<string>( "Address3" ) ?? "";
reqvm.City = r.Field<string>( "City" ) ?? "";
reqvm.State = r.Field<string>( "State" ) ?? "";
reqvm.Zip = r.Field<string>( "Zip" ) ?? "";
reqvm.Email = r.Field<string>( "Email" ) ?? "";
reqvm.County = r.Field<string>( "County" ) ?? "";
reqvm.VoiceNumber = r.Field<string>( "VoiceNumber" ) ?? "";
reqvm.CellNumber = r.Field<string>( "CellNumber" ) ?? "";
reqvm.ExtendApprovedBy = r.Field<string>( "ExtendApprovedBy" ) ?? "";
reqvm.ExtendApprovalDate = r.Field<DateTime?>( "ExtendApprovalDate" ) ?? DateTime.MinValue;
reqvm.ExtendReason = r.Field<string>( "ExtendReason" ) ?? "";
reqvm.ExtendComments = r.Field<string>( "ExtendComments" ) ?? "";
reqvm.ExtendDisapproval = r.Field<string>( "ExtendDisapproval" ) ?? "";
reqvm.Software = r.Field<string>( "Software" ) ?? "";
reqvm.FilesReceived = r.Field<string>( "FilesReceived" ) ?? "";
reqlist.Add( reqvm );
}
return Task.FromResult( reqlist.FirstOrDefault() );
}
}
catch (Exception ex)
{
throw;
}
}
public List<SelectListItem> RetrieveCounter()
{
List<SelectListItem> ret = [];
string strQuery = "Select * from vw_EQCN where countertype = 'ServiceType'";
var objDataView = GetCounterData( strQuery );
ret.AddRange( objDataView ?? [] );
int intRowsFound = objDataView?.Count ?? 0;
if (intRowsFound > 0)
{
return ret;
}
else
{
ViewBag.Text = "No records from Counter";
return ret;
}
}
public List<SelectListItem>? GetCounterData(string strQuery)
{
List<SelectListItem>? ret = HttpContext.Session.GetObject<List<SelectListItem>>("Counter");
if (ret == null)
{
ret = [];
try
{
string strConnect = connectionStrings.Get( "EquipmentConnectString" );
using (var conn = strConnect.OpenConnection())
{
var results = conn.ExecuteReaderText( strConnect, strQuery, [] );
if (results != null)
{
while (results.Read())
{
SelectListItem item = new(
results.GetData<string>( "CounterText" ),
results.GetData<string>( "CounterText" )
);
ret.Add( item );
}
}
}
HttpContext.Session.AddObject( "Counter", ret );
return ret;
}
catch (Exception objerr)
{
_ = objerr.Message;
}
}
else
{
return ret;
}
return ret;
}
public RequestViewModel LoadServiceType( RequestViewModel ret )
{
ret.lstServiceType.Clear();
var lstServiceType = new List<SelectListItem>();
lstServiceType.AddRange( RetrieveCounter() );
var objDefaultListItem = new SelectListItem();
objDefaultListItem.Value = "Select Service Type";
objDefaultListItem.Text = "NoSelection";
lstServiceType.Insert( 0, objDefaultListItem );
ret.lstServiceType.AddRange( lstServiceType );
ret.Services = new SelectList( lstServiceType, "Text", "Value" );
return ret;
}
View:
@model RequestViewModel
<h6>Equipment Request</h6>
<hr />
<body>
<form asp-action="CreateNewRequest" method="post" id="CreateRequest">
<input type="submit" value="Create"/>
<input type="submit" value="Cancel" asp-action="Index" />
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<table cellSpacing="0">
<tr>
<td vAlign="top" align="left">
<table>
<tr>
<td class="section" colSpan="4">
<table>
<TR>
<td colSpan="2"><font color="blue"><B>Equipment Request Information</B></font></td>
</TR>
<tr>
<td nowrap align="left" colspan="2">
<table>
<tr>
<td align="right"> Service Type </td>
<td>
<select multiple="true" asp-for="ServiceType" id="lstServiceType" asp-items="@Model.Services" class="form-control">
</select>
<span asp-validation-for="ServiceType" class="text-danger"></span>
(enter # enhancements in results below)
</td>
</tr>
<tr>
<td align="right">Software Used:</td>
<td>
<select asp-for="Software" id="lstSoftwares" asp-items="@Model.Softwares" class="form-control">
</select>
</td>
</tr>
<tr>
<td align="right">Files Received Via:</td>
<td>
<select asp-for="FilesReceived" id="lstFileTypes" asp-items="@Model.FileTypes" class="form-control">
</select>
</td>
</tr>
<tr>
<td align="right"> Technician </td>
<td>
<select asp-for="Technician" id="lstTechs" asp-items="@Model.Techs" class="form-control">
</select>
<span asp-validation-for="Technician" class="text-danger"></span>
</td>
</tr>
<tr>
<td colspan="2"> </td>
</tr>
<tr>
<td colspan="2" valign="top"><font color="blue"><B>Results</B></font></td>
</tr>
<tr>
<td noWrap align="right">Volume Data Analyzed GB </td>
<td nowrap align="left">
<input type="text" id="VolumeDataAnalyzedGB" maxlength="6" style="width:40px" asp-for="VolumeDataAnalyzedGb" />
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
<td> </td>
<td vAlign="top" align="left">
<!-- RIGHT COLUMN -->
<!-- There are two major columns, left and right, each enclosed in its own table cell. -->
<!-- Each logical section within each column is enclosed in its own table. -->
<table>
<tr>
<td class="section">
<table>
<tr>
<td colspan="2"><font color="blue"><B>Contact Information</B></font></td>
</tr>
<tr>
<td align="right">
Agency
</td>
<td>
<!--Html.DropDownListFor(m => m.AgName, Model.AgNames)-->
<select asp-for="AgName" id="lstAgency" asp-items="@Model.AgNames" class="form-control">
</select>
</td>
</tr>
<tr>
<td align="right">
Officer
</td>
<td>
<input type="text" id="Officer" maxlength="50" size="30" asp-for="Officer"/>
<span asp-validation-for="Officer" class="text-danger"></span>
</td>
</tr>
<tr>
<td align="right">
Addr 1
</td>
<td>
<input type="text" id="Adress1" maxlength="50" size="50" asp-for="Address1"/>
<span asp-validation-for="Address1" class="text-danger"></span>
</td>
</tr>
<tr>
<td align="right">
Addr 2
</td>
<td>
<input type="text" id="Address2" maxlength="50" size="50" asp-for="Address2"/>
</td>
</tr>
<tr>
<td align="right">
Addr 3
</td>
<td>
<input type="text" id="Address3" maxlength="50" size="50" asp-for="Address3"/>
</td>
</tr>
<tr>
<td align="right">
City
</td>
<td nowrap>
<input type="text" id="City" maxlength="30" size="30" asp-for="City"/>
<span asp-validation-for="City" class="text-danager"></span>
State
<select asp-for="State">
@{
Html.RenderPartial("~/Views/StateListAbbr.cshtml");
}
</select>
<span asp-validation-for="State" class="text-danger"></span>
Zip
<input type="text" id="Zip" maxlength="20" size="10" asp-for="Zip"/>
<span asp-validation-for="Zip" class="text-danger"></span>
</td>
</tr>
<tr>
<td align="right">
Email
</td>
<td>
<input type="text" id="email" maxlength="150" size="30" asp-for="Email" />
</td>
</tr>
<tr>
<td> County</td>
<td>
<input type="text" id="County" maxlength="50" size="50" asp-for="County"/>
</td>
</tr>
<tr>
<td align="right">
Office #
</td>
<td>
<input type="text" id="VoiceNumber" maxlength="52" size="10" asp-for="VoiceNumber"/>
<span asp-validation-for="VoiceNumber" class="text-danger"></span>
Cell #
<input type="text" id="CellNumber" maxlength="20" size="20" asp-for="CellNumber"/>
</td>
</tr>
<tr>
<td colspan="2"> </td>
</tr>
<tr>
<td colspan="2">
<table>
<tr>
<td colspan="2" valign="top"><font color="blue"><B>Extension Information</B></font></td>
</tr>
<tr>
<td align="right" nowrap>
Extension <br>
Approved By
</td>
<td nowrap>
<input type="text" id="ExtendApprovedBy" size="10" maxlength="50" asp-for="ExtendApprovedBy"/>
on Date
<input type="text" id="ExtendApprovalDate" size="10" maxlength="10" asp-for="ExtendApprovalDate"/>
</td>
</tr>
<tr>
<td align="right">
Extension <br>
Reason
</td>
<td width="280">
<textarea style="width:96%" id="ExtendReason" asp-for="ExtendReason"></textarea>
</td>
</tr>
<tr>
<td align="right">
Extension <br>
Comments
</td>
<td width="280">
<textarea style="width:96%" id="ExtendComments" asp-for="ExtendComments"></textarea>
</td>
</tr>
<tr>
<td align="right">
Reason for <br>
Extension <br>
Disapproval
</td>
<td width="280">
<textarea style="width:96%" id="ExtendDisapproved" asp-for="ExtendDisapproval"></textarea>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
</form>
</body>
Model:
public List<SelectListItem> lstAgency { get; set; } = [];
public SelectList? AgNames { get; set; }
public List<SelectListItem> lstServiceType { get; set; } = [];
public SelectList? Services { get; set; }
public List<SelectListItem> lstSoftwares { get; set; } = [];
public SelectList? Softwares { get; set; }
public List<SelectListItem> lstTechs { get; set; } = [];
public SelectList? Techs { get; set; }
public List<SelectListItem> lstEquipment { get; set; } = [];
public SelectList? ListofEquipment { get; set; }
public List<SelectListItem> lstFileType { get; set; } = [];
public SelectList? FileTypes { get; set; }
//
public virtual Request? FkrqkeyNavigation { get; set; }
public DateTime? ZzCreationDate { get; set; }
public DateTime? ZzUpdateDate { get; set; }
public string? report { get; set; }
public string? ZzUserCreated { get; set; }
public string? ZzUserLastUpdated { get; set; }
public int Szkey { get; set; }
public int Pakey { get; set; }
public int Lekey { get; set; }
public int? Inkey { get; set; }
public int? AgKey { get; set; }
public int Rqkey { get; set; }
public bool EquipReturned { get; set; }
public string? Accessories { get; set; }
public string? Comment { get; set; }
public string? TypeBrandMagnumber { get; set; }
public string? Category { get; set; }
public string? Detail { get; set; }
public DateTime? ApprovalDate { get; set; }
public byte? Approved { get; set; }
public string? ApprovedBy { get; set; }
public string? AuditComments { get; set; }
public DateTime? AuditDate { get; set; }
public string? City { get; set; }
public DateTime? Closed { get; set; }
public string? Comments { get; set; }
public int? Convictions { get; set; }
public string? CriminalActivity { get; set; }
public DateTime? DateAgencyReceived { get; set; }
public DateTime? DateAgencyReturned { get; set; }
public DateTime? DateDueBack { get; set; }
public DateTime? DateExtendedUntil { get; set; }
public DateTime? DateIssued { get; set; }
public DateTime? DateNeededFrom { get; set; }
public DateTime? DateNeededTo { get; set; }
public DateTime? DateReturnReceived { get; set; }
public int? Dbentry { get; set; }
public string? Disapproval { get; set; }
public byte? Extend { get; set; }
public DateTime? ExtendApprovalDate { get; set; }
public string? ExtendApprovedBy { get; set; }
public string? ExtendComments { get; set; }
public string? ExtendDisapproval { get; set; }
public string? ExtendReason { get; set; }
public string? FaxNumber { get; set; }
public byte? Intel { get; set; }
public string? Leccode { get; set; }
public string? Lecname { get; set; }
public string? Officer { get; set; }
public byte? Refer { get; set; }
public string? ReqId { get; set; }
public decimal? RequestAmt { get; set; }
public DateTime? RequestDate { get; set; }
public string? Results { get; set; }
public DateTime? ResultsDate { get; set; }
public string? ServiceType { get; set; }
public string? Technician { get; set; }
public string? Useage { get; set; }
public string? VoiceNumber { get; set; }
public string? Zip { get; set; }
public int? AudioEnhancements { get; set; }
public int? VideoEnhancements { get; set; }
public string? County { get; set; }
public int? IndividualsLocated { get; set; }
public int? CasesResolved { get; set; }
public int? CasesProsecuted { get; set; }
public int? RetrievedAv { get; set; }
public DateTime? CourtDate { get; set; }
public int? ProductsDelivered { get; set; }
public int? ReqsToCourtroom { get; set; }
public int? OnSiteVisits { get; set; }
public int? NewEvidences { get; set; }
public int? NonCaseAvservices { get; set; }
public int? Consultations { get; set; }
public int? MediumsAnalyzed { get; set; }
public decimal? VolumeDataAnalyzedGb { get; set; }
public string? Email { get; set; }
public string? CaseNum { get; set; }
public string? CellNumber { get; set; }
public string? Address1 { get; set; }
public string? Address2 { get; set; }
public string? Address3 { get; set; }
public string? AgId { get; set; }
public string? AgName { get; set; }
public string? State { get; set; }
public string? AgState { get; set; }
public Guid? AgGuid { get; set; }
public string? AgencyCode { get; set; }
public int? AgencyMemNonMemFlag { get; set; }
public string? AgencyName { get; set; }
public string? AgencyState { get; set; }
public string? MemberAgencyName { get; set; }
public string? NonMemberAgencyName { get; set; }
public string? NonMemberAgencyState { get; set; }
public string? Item { get; set; }
public string? Software { get; set; }
public string? FilesReceived { get; set; }
public decimal? Qty { get; set; }
public decimal? Value { get; set; }
public virtual ICollection<LoanedEquipment> LoanedEquipments { get; set; }
public virtual ICollection<ParticipatingAgency> ParticipatingAgencies { get; set; }
public virtual ICollection<Seizure> Seizures { get; set; }
public virtual ICollection<Request> Requests { get; set; }
public Request requ { get; set; }
I have a select list with a multiple attribute and can select multiple options when using control + click but the options won't save to my SQL database. Therefore, when I try to load the selected options only the first one that selected and saved shows. I'm not sure why it's not saving the multiple options selected.
Controller:
public Task<RequestViewModel?> GetRequest( int id, CancellationToken cancellation = default )
{
List<RequestViewModel> reqlist = new();
try
{
using (var conn = ConnectionString.OpenConnection())
{
List<SqlParameter> sqlParameters = new List<Microsoft.Data.SqlClient.SqlParameter>()
{
new SqlParameter( "@RQKey", id )
};
SqlParameter[] parms = sqlParameters.ToArray();
var ds = conn.LoadDataSet( ConnectionString, "GetEquipmentRequest", System.Data.CommandType.StoredProcedure, parms, 360 );
foreach (DataRow r in ds.Tables[ 0 ].Rows)
{
var reqvm = new RequestViewModel();
reqvm.Rqkey = r.Field<int>( "RQKey" );
reqvm.ReqId = r.Field<string>( "Reqid" ) ?? "";
reqvm.RequestDate = r.Field<DateTime?>( "RequestDate" ) ?? DateTime.MinValue;
reqvm.ApprovedBy = r.Field<string>( "ApprovedBy" ) ?? "";
reqvm.ApprovalDate = r.Field<DateTime?>( "ApprovalDate" ) ?? DateTime.MinValue;
reqvm.ServiceType = r.Field<string>( "ServiceType" ) ?? "";
reqvm.Technician = r.Field<string>( "Technician" ) ?? "";
reqvm.CriminalActivity = r.Field<string>( "CriminalActivity" ) ?? "";
reqvm.CaseNum = r.Field<string>( "CaseNum" ) ?? "";
reqvm.DateNeededFrom = r.Field<DateTime?>( "DateNeededFrom" ) ?? DateTime.MinValue;
reqvm.DateNeededTo = r.Field<DateTime?>( "DateNeededTo" ) ?? DateTime.MinValue;
reqvm.DateIssued = r.Field<DateTime?>( "DateIssued" ) ?? DateTime.MinValue;
reqvm.DateDueBack = r.Field<DateTime?>( "DateDueBack" ) ?? DateTime.MinValue;
reqvm.ExtendApprovalDate = r.Field<DateTime?>( "ExtendApprovalDate" ) ?? DateTime.MinValue;
reqvm.DateExtendedUntil = r.Field<DateTime?>( "DateExtendedUntil" ) ?? DateTime.MinValue;
reqvm.DateAgencyReceived = r.Field<DateTime?>( "DateAgencyReceived" ) ?? DateTime.MinValue;
reqvm.DateAgencyReturned = r.Field<DateTime?>( "DateAgencyReturned" ) ?? DateTime.MinValue;
reqvm.DateReturnReceived = r.Field<DateTime?>( "DateReturnReceived" ) ?? DateTime.MinValue;
reqvm.Comments = r.Field<string>( "Comments" ) ?? "";
reqvm.Disapproval = r.Field<string>( "Disapproval" ) ?? "";
reqvm.ResultsDate = r.Field<DateTime?>( "ResultsDate" ) ?? DateTime.MinValue;
reqvm.CourtDate = r.Field<DateTime?>( "CourtDate" ) ?? DateTime.MinValue;
reqvm.Results = r.Field<string>( "Results" ) ?? "";
reqvm.AudioEnhancements = r.Field<int?>( "audioenhancements" );
reqvm.ReqsToCourtroom = r.Field<int?>( "ReqsToCourtroom" );
reqvm.Convictions = r.Field<int?>( "Convictions" );
reqvm.VideoEnhancements = r.Field<int?>( "videoenhancements" );
reqvm.RetrievedAv = r.Field<int?>( "RetrievedAv" );
reqvm.IndividualsLocated = r.Field<int?>( "IndividualsLocated" );
reqvm.CasesResolved = r.Field<int?>( "CasesResolved" );
reqvm.MediumsAnalyzed = r.Field<int?>( "MediumsAnalyzed" );
reqvm.CasesProsecuted = r.Field<int?>( "CasesProsecuted" );
reqvm.VolumeDataAnalyzedGb = r.Field<decimal?>( "VolumeDataAnalyzedGb" );
reqvm.Consultations = r.Field<int?>( "Consultations" );
reqvm.Officer = r.Field<string>( "Officer" ) ?? "";
reqvm.AgName = r.Field<string>( "ag_Name" ) ?? "";
reqvm.Address1 = r.Field<string>( "Address1" ) ?? "";
reqvm.Address2 = r.Field<string>( "Address2" ) ?? "";
reqvm.Address3 = r.Field<string>( "Address3" ) ?? "";
reqvm.City = r.Field<string>( "City" ) ?? "";
reqvm.State = r.Field<string>( "State" ) ?? "";
reqvm.Zip = r.Field<string>( "Zip" ) ?? "";
reqvm.Email = r.Field<string>( "Email" ) ?? "";
reqvm.County = r.Field<string>( "County" ) ?? "";
reqvm.VoiceNumber = r.Field<string>( "VoiceNumber" ) ?? "";
reqvm.CellNumber = r.Field<string>( "CellNumber" ) ?? "";
reqvm.ExtendApprovedBy = r.Field<string>( "ExtendApprovedBy" ) ?? "";
reqvm.ExtendApprovalDate = r.Field<DateTime?>( "ExtendApprovalDate" ) ?? DateTime.MinValue;
reqvm.ExtendReason = r.Field<string>( "ExtendReason" ) ?? "";
reqvm.ExtendComments = r.Field<string>( "ExtendComments" ) ?? "";
reqvm.ExtendDisapproval = r.Field<string>( "ExtendDisapproval" ) ?? "";
reqvm.Software = r.Field<string>( "Software" ) ?? "";
reqvm.FilesReceived = r.Field<string>( "FilesReceived" ) ?? "";
reqlist.Add( reqvm );
}
return Task.FromResult( reqlist.FirstOrDefault() );
}
}
catch (Exception ex)
{
throw;
}
}
public List<SelectListItem> RetrieveCounter()
{
List<SelectListItem> ret = [];
string strQuery = "Select * from vw_EQCN where countertype = 'ServiceType'";
var objDataView = GetCounterData( strQuery );
ret.AddRange( objDataView ?? [] );
int intRowsFound = objDataView?.Count ?? 0;
if (intRowsFound > 0)
{
return ret;
}
else
{
ViewBag.Text = "No records from Counter";
return ret;
}
}
public List<SelectListItem>? GetCounterData(string strQuery)
{
List<SelectListItem>? ret = HttpContext.Session.GetObject<List<SelectListItem>>("Counter");
if (ret == null)
{
ret = [];
try
{
string strConnect = connectionStrings.Get( "EquipmentConnectString" );
using (var conn = strConnect.OpenConnection())
{
var results = conn.ExecuteReaderText( strConnect, strQuery, [] );
if (results != null)
{
while (results.Read())
{
SelectListItem item = new(
results.GetData<string>( "CounterText" ),
results.GetData<string>( "CounterText" )
);
ret.Add( item );
}
}
}
HttpContext.Session.AddObject( "Counter", ret );
return ret;
}
catch (Exception objerr)
{
_ = objerr.Message;
}
}
else
{
return ret;
}
return ret;
}
public RequestViewModel LoadServiceType( RequestViewModel ret )
{
ret.lstServiceType.Clear();
var lstServiceType = new List<SelectListItem>();
lstServiceType.AddRange( RetrieveCounter() );
var objDefaultListItem = new SelectListItem();
objDefaultListItem.Value = "Select Service Type";
objDefaultListItem.Text = "NoSelection";
lstServiceType.Insert( 0, objDefaultListItem );
ret.lstServiceType.AddRange( lstServiceType );
ret.Services = new SelectList( lstServiceType, "Text", "Value" );
return ret;
}
View:
@model RequestViewModel
<h6>Equipment Request</h6>
<hr />
<body>
<form asp-action="CreateNewRequest" method="post" id="CreateRequest">
<input type="submit" value="Create"/>
<input type="submit" value="Cancel" asp-action="Index" />
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<table cellSpacing="0">
<tr>
<td vAlign="top" align="left">
<table>
<tr>
<td class="section" colSpan="4">
<table>
<TR>
<td colSpan="2"><font color="blue"><B>Equipment Request Information</B></font></td>
</TR>
<tr>
<td nowrap align="left" colspan="2">
<table>
<tr>
<td align="right"> Service Type </td>
<td>
<select multiple="true" asp-for="ServiceType" id="lstServiceType" asp-items="@Model.Services" class="form-control">
</select>
<span asp-validation-for="ServiceType" class="text-danger"></span>
(enter # enhancements in results below)
</td>
</tr>
<tr>
<td align="right">Software Used:</td>
<td>
<select asp-for="Software" id="lstSoftwares" asp-items="@Model.Softwares" class="form-control">
</select>
</td>
</tr>
<tr>
<td align="right">Files Received Via:</td>
<td>
<select asp-for="FilesReceived" id="lstFileTypes" asp-items="@Model.FileTypes" class="form-control">
</select>
</td>
</tr>
<tr>
<td align="right"> Technician </td>
<td>
<select asp-for="Technician" id="lstTechs" asp-items="@Model.Techs" class="form-control">
</select>
<span asp-validation-for="Technician" class="text-danger"></span>
</td>
</tr>
<tr>
<td colspan="2"> </td>
</tr>
<tr>
<td colspan="2" valign="top"><font color="blue"><B>Results</B></font></td>
</tr>
<tr>
<td noWrap align="right">Volume Data Analyzed GB </td>
<td nowrap align="left">
<input type="text" id="VolumeDataAnalyzedGB" maxlength="6" style="width:40px" asp-for="VolumeDataAnalyzedGb" />
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
<td> </td>
<td vAlign="top" align="left">
<!-- RIGHT COLUMN -->
<!-- There are two major columns, left and right, each enclosed in its own table cell. -->
<!-- Each logical section within each column is enclosed in its own table. -->
<table>
<tr>
<td class="section">
<table>
<tr>
<td colspan="2"><font color="blue"><B>Contact Information</B></font></td>
</tr>
<tr>
<td align="right">
Agency
</td>
<td>
<!--Html.DropDownListFor(m => m.AgName, Model.AgNames)-->
<select asp-for="AgName" id="lstAgency" asp-items="@Model.AgNames" class="form-control">
</select>
</td>
</tr>
<tr>
<td align="right">
Officer
</td>
<td>
<input type="text" id="Officer" maxlength="50" size="30" asp-for="Officer"/>
<span asp-validation-for="Officer" class="text-danger"></span>
</td>
</tr>
<tr>
<td align="right">
Addr 1
</td>
<td>
<input type="text" id="Adress1" maxlength="50" size="50" asp-for="Address1"/>
<span asp-validation-for="Address1" class="text-danger"></span>
</td>
</tr>
<tr>
<td align="right">
Addr 2
</td>
<td>
<input type="text" id="Address2" maxlength="50" size="50" asp-for="Address2"/>
</td>
</tr>
<tr>
<td align="right">
Addr 3
</td>
<td>
<input type="text" id="Address3" maxlength="50" size="50" asp-for="Address3"/>
</td>
</tr>
<tr>
<td align="right">
City
</td>
<td nowrap>
<input type="text" id="City" maxlength="30" size="30" asp-for="City"/>
<span asp-validation-for="City" class="text-danager"></span>
State
<select asp-for="State">
@{
Html.RenderPartial("~/Views/StateListAbbr.cshtml");
}
</select>
<span asp-validation-for="State" class="text-danger"></span>
Zip
<input type="text" id="Zip" maxlength="20" size="10" asp-for="Zip"/>
<span asp-validation-for="Zip" class="text-danger"></span>
</td>
</tr>
<tr>
<td align="right">
Email
</td>
<td>
<input type="text" id="email" maxlength="150" size="30" asp-for="Email" />
</td>
</tr>
<tr>
<td> County</td>
<td>
<input type="text" id="County" maxlength="50" size="50" asp-for="County"/>
</td>
</tr>
<tr>
<td align="right">
Office #
</td>
<td>
<input type="text" id="VoiceNumber" maxlength="52" size="10" asp-for="VoiceNumber"/>
<span asp-validation-for="VoiceNumber" class="text-danger"></span>
Cell #
<input type="text" id="CellNumber" maxlength="20" size="20" asp-for="CellNumber"/>
</td>
</tr>
<tr>
<td colspan="2"> </td>
</tr>
<tr>
<td colspan="2">
<table>
<tr>
<td colspan="2" valign="top"><font color="blue"><B>Extension Information</B></font></td>
</tr>
<tr>
<td align="right" nowrap>
Extension <br>
Approved By
</td>
<td nowrap>
<input type="text" id="ExtendApprovedBy" size="10" maxlength="50" asp-for="ExtendApprovedBy"/>
on Date
<input type="text" id="ExtendApprovalDate" size="10" maxlength="10" asp-for="ExtendApprovalDate"/>
</td>
</tr>
<tr>
<td align="right">
Extension <br>
Reason
</td>
<td width="280">
<textarea style="width:96%" id="ExtendReason" asp-for="ExtendReason"></textarea>
</td>
</tr>
<tr>
<td align="right">
Extension <br>
Comments
</td>
<td width="280">
<textarea style="width:96%" id="ExtendComments" asp-for="ExtendComments"></textarea>
</td>
</tr>
<tr>
<td align="right">
Reason for <br>
Extension <br>
Disapproval
</td>
<td width="280">
<textarea style="width:96%" id="ExtendDisapproved" asp-for="ExtendDisapproval"></textarea>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
</form>
</body>
Model:
public List<SelectListItem> lstAgency { get; set; } = [];
public SelectList? AgNames { get; set; }
public List<SelectListItem> lstServiceType { get; set; } = [];
public SelectList? Services { get; set; }
public List<SelectListItem> lstSoftwares { get; set; } = [];
public SelectList? Softwares { get; set; }
public List<SelectListItem> lstTechs { get; set; } = [];
public SelectList? Techs { get; set; }
public List<SelectListItem> lstEquipment { get; set; } = [];
public SelectList? ListofEquipment { get; set; }
public List<SelectListItem> lstFileType { get; set; } = [];
public SelectList? FileTypes { get; set; }
//
public virtual Request? FkrqkeyNavigation { get; set; }
public DateTime? ZzCreationDate { get; set; }
public DateTime? ZzUpdateDate { get; set; }
public string? report { get; set; }
public string? ZzUserCreated { get; set; }
public string? ZzUserLastUpdated { get; set; }
public int Szkey { get; set; }
public int Pakey { get; set; }
public int Lekey { get; set; }
public int? Inkey { get; set; }
public int? AgKey { get; set; }
public int Rqkey { get; set; }
public bool EquipReturned { get; set; }
public string? Accessories { get; set; }
public string? Comment { get; set; }
public string? TypeBrandMagnumber { get; set; }
public string? Category { get; set; }
public string? Detail { get; set; }
public DateTime? ApprovalDate { get; set; }
public byte? Approved { get; set; }
public string? ApprovedBy { get; set; }
public string? AuditComments { get; set; }
public DateTime? AuditDate { get; set; }
public string? City { get; set; }
public DateTime? Closed { get; set; }
public string? Comments { get; set; }
public int? Convictions { get; set; }
public string? CriminalActivity { get; set; }
public DateTime? DateAgencyReceived { get; set; }
public DateTime? DateAgencyReturned { get; set; }
public DateTime? DateDueBack { get; set; }
public DateTime? DateExtendedUntil { get; set; }
public DateTime? DateIssued { get; set; }
public DateTime? DateNeededFrom { get; set; }
public DateTime? DateNeededTo { get; set; }
public DateTime? DateReturnReceived { get; set; }
public int? Dbentry { get; set; }
public string? Disapproval { get; set; }
public byte? Extend { get; set; }
public DateTime? ExtendApprovalDate { get; set; }
public string? ExtendApprovedBy { get; set; }
public string? ExtendComments { get; set; }
public string? ExtendDisapproval { get; set; }
public string? ExtendReason { get; set; }
public string? FaxNumber { get; set; }
public byte? Intel { get; set; }
public string? Leccode { get; set; }
public string? Lecname { get; set; }
public string? Officer { get; set; }
public byte? Refer { get; set; }
public string? ReqId { get; set; }
public decimal? RequestAmt { get; set; }
public DateTime? RequestDate { get; set; }
public string? Results { get; set; }
public DateTime? ResultsDate { get; set; }
public string? ServiceType { get; set; }
public string? Technician { get; set; }
public string? Useage { get; set; }
public string? VoiceNumber { get; set; }
public string? Zip { get; set; }
public int? AudioEnhancements { get; set; }
public int? VideoEnhancements { get; set; }
public string? County { get; set; }
public int? IndividualsLocated { get; set; }
public int? CasesResolved { get; set; }
public int? CasesProsecuted { get; set; }
public int? RetrievedAv { get; set; }
public DateTime? CourtDate { get; set; }
public int? ProductsDelivered { get; set; }
public int? ReqsToCourtroom { get; set; }
public int? OnSiteVisits { get; set; }
public int? NewEvidences { get; set; }
public int? NonCaseAvservices { get; set; }
public int? Consultations { get; set; }
public int? MediumsAnalyzed { get; set; }
public decimal? VolumeDataAnalyzedGb { get; set; }
public string? Email { get; set; }
public string? CaseNum { get; set; }
public string? CellNumber { get; set; }
public string? Address1 { get; set; }
public string? Address2 { get; set; }
public string? Address3 { get; set; }
public string? AgId { get; set; }
public string? AgName { get; set; }
public string? State { get; set; }
public string? AgState { get; set; }
public Guid? AgGuid { get; set; }
public string? AgencyCode { get; set; }
public int? AgencyMemNonMemFlag { get; set; }
public string? AgencyName { get; set; }
public string? AgencyState { get; set; }
public string? MemberAgencyName { get; set; }
public string? NonMemberAgencyName { get; set; }
public string? NonMemberAgencyState { get; set; }
public string? Item { get; set; }
public string? Software { get; set; }
public string? FilesReceived { get; set; }
public decimal? Qty { get; set; }
public decimal? Value { get; set; }
public virtual ICollection<LoanedEquipment> LoanedEquipments { get; set; }
public virtual ICollection<ParticipatingAgency> ParticipatingAgencies { get; set; }
public virtual ICollection<Seizure> Seizures { get; set; }
public virtual ICollection<Request> Requests { get; set; }
public Request requ { get; set; }
Share
Improve this question
edited Mar 25 at 5:00
marc_s
756k184 gold badges1.4k silver badges1.5k bronze badges
asked Mar 24 at 17:49
mag232913mag232913
457 bronze badges
1 Answer
Reset to default 1Therefore, when I try to load the selected options only the first one that selected and saved shows. I'm not sure why it's not saving the multiple options selected.
To receive multipule selected options,you need List<string>
instead of string
For example:
<select multiple="true" asp-for="ServiceType" id="lstServiceType" asp-items="@Model.Services" class="form-control">
</select>
you have to modify
public string? ServiceType { get; set; }
to
public List<string>? ServiceType { get; set; }
A minimal example that works on myside:
Model:
public class ViewModel
{
public SelectList? selectListItems { get; set; }
public List<string>? ServiceTypes { get; set; }
}
public class Service
{
public string? Id { get; set; }
public string? Type { get;set; }
}
controller:
public IActionResult Index()
{
var services=new List<Service>()
{
new Service(){Id="1",Type="T1"},
new Service(){Id="2",Type="T2"},
new Service(){Id="3",Type="T3"},
new Service(){Id="4",Type="T4"}
};
var vm=new ViewModel()
{
selectListItems=new SelectList(services,"Id","Type")
};
return View(vm);
}
[HttpPost]
public IActionResult Test(ViewModel viewModel)
{
return Ok();
}
View:
model ViewModel
<form method="post" asp-action="Test">
<select multiple="true" asp-for="ServiceTypes" asp-items="@Model.selectListItems" class="form-control">
</select>
<button type="submit"> Submit</button>
</form>
The options I selected:
What I received in controller:
发布者:admin,转转请注明出处:http://www.yc00.com/questions/1744235994a4564472.html
评论列表(0条)