Hi rani,
Check this example. Now please take its reference and correct your code.
Database
I have made use of the following table FruitsDB with the schema as follows.
I have already inserted few records in the table.
Namespaces
using System.Data;
using System.Data.SqlClient;
using Microsoft.AspNetCore.Mvc.Rendering;
Controller
public class HomeController : Controller
{
public IActionResult Index()
{
List<SelectListItem> fruits = PopulateFruits();
return View(new SelectList(fruits, "Value", "Text"));
}
[HttpPost]
public IActionResult Index(string[] fruits)
{
List<SelectListItem> selectedFruits = PopulateFruits();
string condition = string.Empty;
foreach (SelectListItem item in selectedFruits.ToList())
{
if (fruits.Contains(item.Value))
{
condition += string.Format("'{0}',", item.Text);
item.Selected = true;
}
}
string query = "SELECT * FROM Fruits";
if (!string.IsNullOrEmpty(condition))
{
condition = string.Format(" WHERE FruitName IN ({0})", condition.Substring(0, condition.Length - 1));
}
string constr = @"Data Source=.\SQL2014;Initial Catalog=FruitsDB;Integrated Security=true";
using (SqlConnection con = new SqlConnection(constr))
{
using (SqlCommand cmd = new SqlCommand(query + condition))
{
using (SqlDataAdapter sda = new SqlDataAdapter(cmd))
{
cmd.Connection = con;
using (DataTable dt = new DataTable())
{
sda.Fill(dt);
ViewBag.Fruits = dt;
}
}
}
}
return View(new SelectList(selectedFruits, "Value", "Text"));
}
private static List<SelectListItem> PopulateFruits()
{
string constr = @"Data Source=.\SQL2014;Initial Catalog=FruitsDB;Integrated Security=true";
List<SelectListItem> items = new List<SelectListItem>();
using (SqlConnection con = new SqlConnection(constr))
{
string query = "SELECT FruitName, FruitId FROM Fruits";
using (SqlCommand cmd = new SqlCommand(query))
{
cmd.Connection = con;
con.Open();
using (SqlDataReader sdr = cmd.ExecuteReader())
{
while (sdr.Read())
{
items.Add(new SelectListItem
{
Text = sdr["FruitName"].ToString(),
Value = sdr["FruitId"].ToString()
});
}
}
con.Close();
}
}
return items;
}
}
View
@model SelectList
@addTagHelper*, Microsoft.AspNetCore.Mvc.TagHelpers
@{
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Index</title>
<script type="text/javascript" src="https://code.jquery.com/jquery-3.3.1.slim.min.js"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js"></script>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" />
<script type="text/javascript" src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-multiselect/0.9.16/js/bootstrap-multiselect.min.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-multiselect/0.9.16/css/bootstrap-multiselect.min.css" />
<script type="text/javascript">
$(function () {
$('[id*=ddlFruits]').multiselect({
includeSelectAllOption: true
});
});
</script>
</head>
<body>
<div class="container">
<br />
<form method="post" asp-controller="Home" asp-action="Index">
<select id="ddlFruits" name="fruits" asp-items="Model" multiple>
</select>
<input type="submit" value="Submit" />
</form>
@if (ViewBag.Fruits != null)
{
<table class="table">
<tr>
<th>Id</th>
<th>Name</th>
</tr>
@foreach (var item in ViewBag.Fruits.Rows)
{
<tr>
<td>@item["FruitId"]</td>
<td>@item["FruitName"]</td>
</tr>
}
</table>
}
</div>
</body>
</html>
Screenshot