首先,谢谢你的回答。我在Asp.Net MVC上有路由问题。
您可以在我的控制器和视图所在的照片上看到我的解决方案。我想打开" UserProfile.cshtml"来自" Index.cshtml"。好吧,我的第一种方法是使用Ajax发布" UserProfile Action"在ProfileController中。
$.ajax({
url: "/Profile/UserProfile",
type: "POST",
dataType: "json"})
.done(function(response){
window.location = '/Profile/UserProfile'});
这个代码块进入控制器并点击" UserProfile"操作但不返回错误,也没有返回视图。即使URL也不会改变。
public ActionResult UserProfile()
{
return View ();
}
非常感谢您提供有用的答案和支持。谢谢!
答案 0 :(得分:0)
首先,您需要拥有Razor(.cshtml)视图,而不是aspx for mvc才能提供开箱即用的这些页面。如果您在UserProfile
中有一个名为ProfileController
的控制器操作并调用return View()
,那么mvc将默认尝试返回位于Views/Profile/UserProfile.cshtml
的视图(它实际上也会检查其他几个位置,例如视图的Views / Shared /文件夹)。以下内容适用于您:
//located in ProfileController
[HttpPost]
public ActionResult UserProfile()
{
return View();
}
//located at Views/Profile/UserProfile.cshtml
`<h4>you've found your user profile page!</h4>`
如果你试图通过ajax点击这个视图,那么你需要从一个稍微不同的方向来解决问题。在服务器端重定向不适用于ajax,因为它是异步的。您可以使用.done()
ajax回调来实现此目的,如下所示:
$.ajax({
url: "/Profile/UserProfile",
type: "POST",
dataType: "json"
}).done(function(response){
window.location = '/Profile/UserProfile'
});