【发布时间】:2019-09-17 14:50:54
【问题描述】:
我有 _layout 文件我想在项目的不同页面上显示的内容
_layout.cshtml
<html>
xxxxx
</html>
我的_layout 有一个导航栏我决定创建一个partialView 以便能够使用不同于我的“家”控制器的另一个控制器显示该导航栏
导航控制器
public class NavBarController : Controller
{
// GET: NavBar
[ChildActionOnly]
public PartialViewResult BarraNavegacion()
{
return PartialView("~/Views/Shared/_navbar.cshtml");
}
[HttpPost]
public string LogOut(string data)
{
FormsAuthentication.SignOut();
return "bye";
}
}
在我的_layout 中,我添加了以下行:
@{Html.RenderAction("BarraNavegacion", "NavBar");}
到目前为止一切正常,导航栏显示良好
我的导航栏有一个注销按钮,所以我尝试使用 ajax 实现 LogOut 方法
脚本退出
//Boton salir
$('.salirUsuario').click(function() {
console.log("salio");
$.ajax({
url: 'LogOut',
method: "POST",
data: { data: "xx" },
async: false,
dataType: "json",
success: function (json) {
window.location.href = '@Url.Action("Login","Login")';
}
});
但收到以下控制台错误
jquery-3.4.1.min.js:2 POST http://localhost:9887/Home/LogOut 404 (Not Found)
我知道应用程序试图在“Home”(这是我目前所在的视图)中找到方法/操作“LogOut”,但是我如何转到控制器的 NavBar / LogOut我创建的名为NavBar 而不是转到“Home”或我当时所在的任何其他视图?
【问题讨论】:
-
我认为你错过了这一点。您的局部视图与您的操作方法以及您如何实现它们无关。只要您的路线定义正确,您就可以使用 AJAX 调用任何控制器的任何操作方法并在那里处理您的逻辑。从技术上讲,您将调用
Home控制器的Logout方法,并根据您的逻辑,您可以发回注销状态并对View进行适当的重定向。您还应该阅读此答案以获取更多信息:stackoverflow.com/questions/10253769/…
标签: c# ajax asp.net-mvc