我可以用ASP发送消息而不是视图作为ActionResult返回吗?净MVC4

Can I send a message instead of a view back as an ActionResult with ASP.NET MVC4

本文关键字:ActionResult 返回 MVC4 视图 ASP 消息 我可以      更新时间:2023-09-26

我在ASP中有以下动作。净MVC4

    public ActionResult Register(RegisterModel model)
    {
        if (ModelState.IsValid)
        {
            // Attempt to register the user
            try
            {
                WebSecurity.CreateUserAndAccount(model.UserName, model.Password);
                WebSecurity.Login(model.UserName, model.Password);
                // ?? Need some code here 
            }
            catch (MembershipCreateUserException e)
            {
                ModelState.AddModelError("", ErrorCodeToString(e.StatusCode));
            }
        }
        // If we got this far, something failed, redisplay form
        return View(model);
    }

我有下面的代码调用它:

$('#article').on('submit', '#loginForm, #registerForm', function (e) {
     e.preventDefault();
     var $form = $(this);
     var href= $form.attr('data-href');
     $form.validate();
     if (!$form.valid()) {
         return false;
     }
     var data = $form.serializeArray();
     $.ajax(
     {
         data: data,
         type: 'POST',
         url: href
     })
         .done(submitDone)
         .fail(submitFail);
     function submitDone(content) {
         $('#article').html(content)
     }
     function submitFail() {
         alert("Failed");
     }
     return false;
 });

如果注册工作,我想强制整个网页刷新。有一种方式,我可以发送回消息从actionmethod到javascript到告诉它,注册工作和javascript应该刷新整个网页?

我确实尝试返回redirecttollocal ("/");但这绝对行不通。什么这将返回一个新页面,然后将其填充在#article DIV中。

没有任何东西会自动从服务器刷新浏览器。

要从服务器刷新浏览器,您需要从服务器向客户端发送一些内容,表明您想要刷新页面。您需要编写javascript来查找刷新浏览器的指示。

客户机代码

function submitDone(content) {
 var json = $.parseJson(content);
  if(json.isSuccess) {
   //Do something here   
  }
     $('#article').html(json.content)
 }

服务器代码
public ActionResult Register(RegisterModel model)
    {
        if (ModelState.IsValid)
        {
            // Attempt to register the user
            try
            {
                WebSecurity.CreateUserAndAccount(model.UserName, model.Password);
                WebSecurity.Login(model.UserName, model.Password);
                // ?? Need some code here 
            }
            catch (MembershipCreateUserException e)
            {
                ModelState.AddModelError("", ErrorCodeToString(e.StatusCode));
            }
        }
    // If we got this far, something failed, redisplay form
    return Json(new {isSuccess = true, content = model});
}

我不确定你想通过刷新页面来完成什么,如果它是为了清除表单字段。同样可以通过使用JavaScript实现。通过使用javascript而不是页面刷新,您将不会丢失页面状态,例如错误消息。

好吧,我可以想到一个快速的javascript技巧来刷新成功的页面,像这样

function submitDone(content) {
     window.location.reload();
 }

这将重新加载页面成功。