Asp.Net MVC路由和URL问题

时间:2017-11-15 15:20:53

标签: c# asp.net asp.net-mvc routing

首先,谢谢你的回答。我在Asp.Net MVC上有路由问题。

enter image description here

您可以在我的控制器和视图所在的照片上看到我的解决方案。我想打开" 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 ();
    }

非常感谢您提供有用的答案和支持。谢谢!

1 个答案:

答案 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'
 });