使用 RedirectToAction 方法时视图内容不刷新
Posted
技术标签:
【中文标题】使用 RedirectToAction 方法时视图内容不刷新【英文标题】:The view content doesn't refresh when using RedirectToAction method 【发布时间】:2021-10-27 00:43:33 【问题描述】:我创建了一个简单的 asp.net core mvc 项目。
HomeController.cs 如下所示:
public class HomeController : Controller
public HomeController()
public IActionResult Index(string name, string desc)
Random random = new Random();
TestViewModel viewModel = new TestViewModel();
viewModel.Id = random.Next(0,7).ToString();
viewModel.Name = name;
viewModel.desc = desc;
return View(viewModel);
public IActionResult Update()
//return View("Index", new TestViewModel() Name="Steven", desc="Hello" );
return RedirectToAction("Index", new name = "Steven", desc="Hello" );
ViewModel 类:
public class TestViewModel
public string Name get; set;
public string Id get; set;
public string desc get; set;
剃刀页面:
<!--
@
ViewData["Title"] = "Home Page";
@model WebApplication6.Controllers.TestViewModel
<div class="main">
<form method="get">
<label name="id" asp-for="Id">@Model.Id</label>
<label asp-for="Name">@Model.Name</label>
<input name="desc" type="text" value="@Model.desc" />
<input name="t1" type="button" onclick="executeInsert()"/>
</form>
</div>
<script type="text/javascript">
function executeInsert()
$.get('/Home/Update');
</script> -->
当我点击按钮时,我实际上已经发送了获取请求并且它已经重定向到索引操作,但是浏览器不会刷新视图内容。
【问题讨论】:
您在 ajax 中调用操作方法更新。即使服务器正在执行 RedirectToAction,ajax 也不会刷新页面或重定向。您可能想要使用提交按钮实际提交表单 请您试一试,让我知道这是否适合您。如果您在这方面需要任何进一步的帮助,请告诉我。 【参考方案1】:这个函数不能这样调用$.get('/Home/Update');
您可以通过这种方式更优雅地完成您想要实现的目标,您可以尝试以下示例:
控制器加载视图:
public IActionResult Index(string name, string desc)
Random random = new Random();
TestViewModel viewModel = new TestViewModel();
viewModel.Id = random.Next(0, 7).ToString();
viewModel.Name = name;
viewModel.desc = desc;
return View(viewModel);
控制器提交新值:
[HttpPost]
public IActionResult Update(TestViewModel model)
return RedirectToAction("Index", new name = model.Name, desc = model.desc );
查看:
@model MVCApps.Models.TestViewModel
@
ViewData["Title"] = "ViewContentTestIndex";
<h3>View Content Test Index</h3>
<hr />
@using (html.BeginForm("Update", "UserLog"))
<div>
Id: <label name="id" asp-for="Id">@Model.Id</label>
Name:<label asp-for="Name">@Model.Name</label>
Desc:<label asp-for="desc">@Model.desc</label>
</div>
<hr />
<div>
<label asp-for="Name">Name</label>
<input name="Name" type="text" value="@Model.Name" />
<label asp-for="Name">Desc</label>
<input name="desc" type="text" value="@Model.desc" />
<input id="Button" type="submit" value="Save" class="btn btn-primary" />
</div>
输出:
希望对你有帮助。
【讨论】:
以上是关于使用 RedirectToAction 方法时视图内容不刷新的主要内容,如果未能解决你的问题,请参考以下文章
ASP.NET Core MVC RedirectToAction 不工作
ASP.NET MVC RedirectToAction 在从视图中发布 AJAX 后不起作用
如何在 ASP.NET MVC 6 中继续使用 ModelState 和 RedirectToAction?