【问题标题】:View doesn't refresh after RedirectToAction is doneRedirectToAction 完成后视图不刷新
【发布时间】:2012-08-10 21:55:29
【问题描述】:

这是我的问题:

[HttpPost]
public ActionResult AddData(CandidateViewModel viewModel)  
{
    var newCandidateId = 0;  
    newCandidateId = this._serviceClient.AddCandidate(viewModel);  
    return  RedirectToAction("DisplayCandidate",new {id=newCandidateId});  
}

public ActionResult DisplayCandidate(int id)
{
    var candidateViewModel= this._serviceClient.GetCandidate(id);
    return View(candidateViewModel);
}

填写表格后viwemodel发送到服务器。存储数据后,流程被重定向到 DisplayCandidate 操作,它会去那里,但页面没有刷新。我不明白为什么!请帮忙。

【问题讨论】:

  • 您是通过 AJAX 发布的吗?显示您的客户端代码。
  • 是的。 AJAX: if (DataIsValid()) { $.ajax({ url: "/Candidate/AddData", contentType: "application/json; charset=utf-8", data: ko.toJSON(addCandidateCommonInfoViewModel), type: "POST ", 数据类型: 'json' }); }

标签: asp.net-mvc redirecttoaction


【解决方案1】:

因为您使用的是 Ajax Post

public ActionResult AddData(CandidateViewModel viewModel)  
{
    var newCandidateId = 0;  
    newCandidateId = this._serviceClient.AddCandidate(viewModel); 
    string ReturnURL = "/DisplayCandidate/"+newCandidateId;
    return JSON(ReturnURL);  
}

在您的 Ajax 发布方法中:

Onsuccess(function(retURL){ window.location(retURL); })

这将带入新的 Action 并且该 Action 将返回 View。

【讨论】:

  • 改变你的控制器 AddData 方法来获取。
  • location.replace(retURL) 替换windows.location(retURL) 也永远不要使用手动url 构建,我们Url.Action("DisplayCandidate", new { id = newCandidateId })
【解决方案2】:

如果您使用的是 Ajax,则返回一个脚本结果以执行导航

而不是

return  RedirectToAction("DisplayCandidate",new {id=newCandidateId});  

试试

 var viewName = "/Path/ViewName";
 var id = 1;
 var urlNavigate = string.Format("location.href='{0}?id={1}'", viewName, id);
 return new JavaScriptResult() { Script = urlNavigate };

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-24
    • 2021-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-01
    • 1970-01-01
    • 2016-05-07
    相关资源
    最近更新 更多