Hi trisetia302,
Check this example. Now please take its reference and correct your code.
I have used a table Users having Username and Passowrd columns.
Model
public class LoginViewModel
{
public string user_name { get; set; }
public string password { get; set; }
}
Controller
public class HomeController : Controller
{
private readonly IConfiguration _configuration;
public HomeController(IConfiguration configuration)
{
this._configuration = configuration;
}
public IActionResult Index()
{
return View();
}
public IActionResult Login()
{
return View();
}
[HttpPost]
[ValidateAntiForgeryToken]
public IActionResult Login(LoginViewModel loginViewModel)
{
try
{
using (SqlConnection con = new SqlConnection(_configuration.GetConnectionString("db_mvc")))
{
SqlCommand cmd = new SqlCommand("SELECT * FROM Users WHERE Username = @user_name AND Password = @password", con);
cmd.CommandType = CommandType.Text;
cmd.Parameters.AddWithValue("@user_name", loginViewModel.user_name);
cmd.Parameters.AddWithValue("@password", loginViewModel.password);
DataTable dt = new DataTable();
con.Open();
dt.Load(cmd.ExecuteReader());
con.Close();
if (dt.Rows.Count > 0)
{
//Message if login succesfuly.
TempData["Message"] = "Successfully Login";
return RedirectToAction("Index", "Home");
}
else
{
//Message if login failed.
ViewBag.Message = "Login Failed. Wrong Username or Password !!!";
return View(loginViewModel);
}
}
}
catch (Exception ex)
{
throw;
}
}
}
View
Index
@{
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Index</title>
</head>
<body>
<a href="/Home/Login">Login</a>
@if (TempData["Message"] != null)
{
<script type="text/javascript">
window.onload = function () {
alert("@TempData["Message"]");
};
</script>
}
</body>
</html>
Login
@addTagHelper*, Microsoft.AspNetCore.Mvc.TagHelpers
@model Login_Message_MVC_Core.Models.LoginViewModel
@{
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Login</title>
<script src="~/lib/jquery/dist/jquery.min.js"></script>
<link href="~/lib/bootstrap/dist/css/bootstrap.min.css" rel="stylesheet" />
<script src="~/lib/bootstrap/dist/js/bootstrap.min.js"></script>
</head>
<body class="hold-transition login-page container">
<div class="login-box">
<div class="login-logo">
<a href=""><b></b></a>
</div>
<div class="card">
<div class="card-body login-card-body">
<h2 class="text-center">
<b>Admin Login</b>
</h2>
<h5></h5>
<form asp-action="Login" method="post">
<div asp-validation-summary="All" class="text-danger"></div>
<div class="input-group mb-3">
<input asp-for="user_name" class="form-control" placeholder="User Name" required>
<span asp-validation-for="user_name" class="text-danger"></span>
<div class="input-group-append">
<div class="input-group-text">
<span class="fas fa-envelope"></span>
</div>
</div>
</div>
<div> </div>
<div class="input-group mb-3">
<input type="password" asp-for="password" class="form-control" placeholder="Password" required>
<span asp-validation-for="password" class="text-danger"></span>
<div class="input-group-append">
<div class="input-group-text">
<span class="fas fa-lock"></span>
</div>
</div>
</div>
<div> </div>
<div class="row">
<div class="col-sm-2">
<button type="Submit" class="btn btn-success btn-block">Sign In</button>
</div>
</div>
</form>
@if (ViewBag.Message != null)
{
<script type="text/javascript">
window.onload = function () {
alert("@ViewBag.Message");
};
</script>
}
</div>
</div>
</div>
</body>
</html>
Make sure to set the app.UseCookiePolicy() after app.UseMvc to display the TempData message after RedirectToAction.
Startup.cs
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseStaticFiles();
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
app.UseCookiePolicy();
}
}
Screenshot
