使用 RedirectToAction 方法时视图内容不刷新
The view content doesn't refresh when using RedirectToAction method
我创建了一个简单的 asp.net 核心 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 class:
public class TestViewModel
{
public string Name { get; set; }
public string Id { get; set; }
public string desc { get; set; }
}
Razor 页面:
<!--
@{
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> -->
当我点击按钮时,我实际上已经发送了获取请求并且它已经重定向到索引操作,但是浏览器没有刷新视图内容。
这个函数不能这样调用$.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>
}
输出:
希望对你有所帮助
我创建了一个简单的 asp.net 核心 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 class:
public class TestViewModel
{
public string Name { get; set; }
public string Id { get; set; }
public string desc { get; set; }
}
Razor 页面:
<!--
@{
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> -->
当我点击按钮时,我实际上已经发送了获取请求并且它已经重定向到索引操作,但是浏览器没有刷新视图内容。
这个函数不能这样调用$.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>
}
输出:
希望对你有所帮助