2

我有一个注册表单,成功注册后,它会重定向到另一个视图。我使用提交按钮将数据插入数据库,我想清除当前视图中的值并将用户重定向到logon page同一控制器下的另一个视图中。提交类型未执行 jquery 中提到的操作。请帮助我

这是我的代码预览

Account/register

Account/logon

 Accountcontroller.cs
      [HttpPost]
     public ActionResult Register(RegisterModel model, FormCollection form)
      {
           try {
                ---code
               }
           catch {
           }
      }

register.cshtml
     @using (Html.BeginForm("Register", "Account", FormMethod.Post, new { id = "accForm"      }))    
           {
             @html.textboxfor(.....)
             @html.textboxfor(.....)
             @html.textboxfor(.....)
             @html.textboxfor(.....)
                    ....
          <input type="submit" value="CreateAccount" class="buttonclass"               title="CreateAccount" ; onclick="SaveUser(this);" 

             }

    function SaveUser(btnClicked) {
           alert("clear");
           document.getElementById("regname").value = '';
           document.getElementById("regusername").value = '';
           document.getElementById("regemail").value = '';
           document.getElementById("regpassword").value = '';


           document.getElementById("regpassword2").value = '';

           $.ajax({
                   url: window.location.pathname + '/Account/Logon',

                   type: 'GET',
               })
               .success(function (result) {
                    alert("user saved successfully");
                     });

更新:

   function SaveUser(btnClicked) {

       document.getElementById("regname").value = '';
       document.getElementById("regusername").value = '';
       document.getElementById("regemail").value = '';
       document.getElementById("regpassword").value = '';
       document.getElementById("regpassword2").value = '';
       alert('clear');
   $.ajax({


          type: "POST",
           url:  window.location.pathname + "Account/Register",

           success: function (response) {
               $.ajax({
                   url: window.location.pathname + '/Account/Logon',
                   type: 'GET',
               })
        .success(function (result) {
            alert("user saved successfully");

            // window.location ="";
        });
           },
           error: function (xhr, status, error) {
               alert("Failed");
           }
       });
}

我收到失败警报。请帮忙

4

2 回答 2

1

如果要在 SuccessFull 登录时重定向页面,请在 Success(ajax 成功)上编写重定向代码。经验:

$.ajax({
        url: window.location.pathname + '/Account/Logon',
        type: 'GET',
         })
         .success(function (result) {
                    alert("user saved successfully");

         // window.location ="";
          });
于 2013-08-07T08:55:31.727 回答
0

Arun 发布的内容完全有效。但是您还必须在客户端站点代码中维护 URL。

另一种方法是在您的控制器中找出发布的请求是否是 AjaxRequest。如果是这样并且某些条件适用,您可以重定向甚至将部分发送回客户端。

使用 MVC 4 确定请求是否为 AjaxRequest 的一种方法是

new HttpRequestWrapper(System.Web.HttpContext.Current.Request).IsAjaxRequest() 

或解析 ajax 属性的请求标头。

这也是一个关于 使用 ASP.NET MVC 和 JQuery 表单插件/文件上传检测 Ajax 请求检测 IsAjaxRequest() 的问题

好的,如果您考虑使用编译路由在 ASP.NET MVC 中发布 ajaxy 内容...

$.ajax({
        url: '@Url.Action( "Register", "Account")',
        data: {model:JSON.stringify(inputs)},
        type: 'POST',

或用于表单集合

$.ajax({
    url: '@Url.Action( "Register", "Account")',
    data: {col :$("form_id").serialize()},
    type: 'POST',

...

在您的视图中使用 @URL.Action 助手。现在,当 Register 收到一个 ajax 请求时,处理服务器上的重定向逻辑......

于 2013-08-07T09:07:57.963 回答