我有一個簡單的登錄控制器:Knockoutjs不能去RedirectToAction視圖
public ActionResult Login()
{
return View();
}
[HttpPost]
public ActionResult Login(string userName, string passWord)
{
if (ModelState.IsValid)
{
var employee =
db.Employees.FirstOrDefault(x => x.EmployeeNo == userName && x.Password == passWord && x.StatId == 1);
if (employee != null)
{
return RedirectToAction("Index");
}
}
return View();
}
public ActionResult Index()
{
return View(db.Employees.ToList());
}
這是我的看法這勢必一個knockoutjs文件:
@model SimpleLogin.Models.Employee
@{
ViewBag.Title = "Login";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2>Login</h2>
<span>User</span> <span data-bind="text: userName"></span> <br/>
<span>Password</span> <span data-bind="text: passWord"></span>
<div>
<table>
<tr>
<td>
<input type="text" name="txtUserName" placeholder="User Name" data-bind="value: userName" /></td>
</tr>
<tr>
<td>
<input type="password" name="txtPassword" placeholder="Password" data-bind="value: passWord"/></td>
</tr>
</table>
<button data-bind="click: logUser">Login</button>
</div>
@section Scripts
{
@Scripts.Render("~/bundles/jquery")
@Scripts.Render("~/bundles/knockout")
@Scripts.Render("~/Knocks/LoginVm.js")
}
這是我的淘汰賽LoginVm。 JS
$(function() {
ko.applyBindings(LoginVm);
});
var LoginVm = {
userName: ko.observable(''),
passWord: ko.observable(''),
logUser: function() {
var self = this;
$.ajax({
url: '/Company/Login',
type: 'post',
dataType: 'json',
data: ko.toJSON(self),
contentType: 'application/json',
success: function(data) {
//window.location.href = '/Company/Index'; //I tried putting an alert here but doesn't work. why?
}
});
}
};
當我運行應用程序,我把一個破發點,在「如果(ModelState.IsValid)」控制器。它運行良好。它甚至執行「返回RedirectToAction(」索引「)」,但問題是,頁面停留在登錄視圖中,並且從未加載索引視圖。爲什麼?我做錯了什麼?
我也把這個:
bundles.Add(new ScriptBundle("~/bundles/knockout").Include(
"~/Scripts/knockout-2.1.0.js",
"~/Scripts/knockout-2.1.0.debug.js"));
在BundleConfig.cs
我不習慣JS,這真的讓我困惑。我知道我所做的有兩個以上的錯誤。
這是我
類public class Employee{
public int EmployeeId {get; set;}
public string UserName {get; set}
public string Password {get; set;}
}
你做了一個ajax調用 - 他們的重點是呆在同一頁面(ajax調用永不重定向) –
哇!不知道!謝謝 – NoobProgger