Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# MVC操作控制器不呈现页面_C#_Asp.net Mvc - Fatal编程技术网

C# MVC操作控制器不呈现页面

C# MVC操作控制器不呈现页面,c#,asp.net-mvc,C#,Asp.net Mvc,编译网站注册所需的表单(Registration.cshtml)后,表单数据将在sqlite数据库中发送(成功)。从那里返回,我想被发送到Main.cshtml网页。问题在于,用于呈现Main.cshtml视图的操作控制器没有这样做 我曾多次尝试更改Redirect/RedirectToAction和View方法,但都失败了 return View("Main"); return RedirectToAction("Main"); return JavaScript("wind

编译网站注册所需的表单(Registration.cshtml)后,表单数据将在sqlite数据库中发送(成功)。从那里返回,我想被发送到Main.cshtml网页。问题在于,用于呈现Main.cshtml视图的操作控制器没有这样做

我曾多次尝试更改Redirect/RedirectToAction和View方法,但都失败了

   return View("Main");
   return RedirectToAction("Main");
   return JavaScript("window.location = window.location.origin + /Pages/Main");
PagesController.cs

   [HttpPost]
   public ActionResult Register {
        if (insert data in db == true) {
            return RedirectToAction("Main");
        }

        return View();
   }

   public ActionResult Main(){
        return View();
   }
         $("#register").dxButton({
             text: "Registrati",
             type: "normal",
             hint: "Clicca per registrarti",
             onClick: function () {
               if($('#password').
               dxValidator('instance').validate().isValid &&
               $('#email').dxValidator('instance').validate().isValid) {
                     let email = $("#email").dxTextBox('instance').option('value');
                     let pass = $("#password").dxTextBox('instance').option('value');

                     $.ajax({
                         url: window.location.origin + '/Pages/Register',
                         type: "POST",
                         data: '{"email":"' + email + '","password":"' + pass + '"}',
                         contentType: "application/json; charset=utf-8",
                         dataType: "json",
                      });
               }
             }
          });
Main.cshtml

    @{
         Layout = "~/Views/Layouts/LoggedMasterPage.cshtml";
         ViewBag.Title = "Benvenuto in ETL365"; 
     }
     @section Head{
          <link rel="stylesheet" href="~/Content/Main.css" />
          <script type="text/javascript" src="~/Scripts/Main.js"></script>
     }
我已经在Main.cshtml上使用了断点,它实际上是在

     return View();
由操作Main()完成。 我期望的是重定向到mylocalhost:xxxx/Pages/Main
我得到的是一无所有,我总是在mylocalHost:xxxx/Pages/Register

成功的ajax调用后,您需要重定向到主页

$.ajax({
...
    success:
    {
    location.href = 'mylocalhost:xxxx/Pages/Main'
    }
...

在ajax调用成功后,您需要重定向到主页面

$.ajax({
...
    success:
    {
    location.href = 'mylocalhost:xxxx/Pages/Main'
    }
...

您不能对AJAX调用响应使用
RedirectToAction
,因为AJAX请求旨在更新视图而不重新加载整个页面。您需要将URL作为JSON响应传递,如下所示:

[HttpPost]
public ActionResult Register(string email, string password) 
{
    if (condition) // put your condition here
    {
        return Json(new { 
            status = "Success", 
            url = Url.Action("Main", "Pages")
        });
    }

    // since this controller receives AJAX request, the partial view should be used instead
    return PartialView("_Register");
}
然后在AJAX
success
条件下,您可以检查响应状态并重定向到目标URL:

$.ajax({
    url: '@Url.Action("Register", "Pages")',
    type: "POST",
    data: { email: email, password: pass },
    success: function (result) {
        if (typeof result.status !== undefined && result.status == "Success") {
            location.href = result.url; // redirect to main page
        }
        else {
            $('#register').html(result); // refresh partial view
        }
    }
});
相关问题:


您不能对AJAX调用响应使用
RedirectToAction
,因为AJAX请求旨在更新视图而不重新加载整个页面。您需要将URL作为JSON响应传递,如下所示:

[HttpPost]
public ActionResult Register(string email, string password) 
{
    if (condition) // put your condition here
    {
        return Json(new { 
            status = "Success", 
            url = Url.Action("Main", "Pages")
        });
    }

    // since this controller receives AJAX request, the partial view should be used instead
    return PartialView("_Register");
}
然后在AJAX
success
条件下,您可以检查响应状态并重定向到目标URL:

$.ajax({
    url: '@Url.Action("Register", "Pages")',
    type: "POST",
    data: { email: email, password: pass },
    success: function (result) {
        if (typeof result.status !== undefined && result.status == "Success") {
            location.href = result.url; // redirect to main page
        }
        else {
            $('#register').html(result); // refresh partial view
        }
    }
});
相关问题:


因为Javascript正在处理http请求,所以重定向不会传递到页面。您必须在Javascript中处理此问题。因为Javascript正在处理http请求,所以重定向不会传递到页面。您必须用Javascript处理这个问题。