- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个名为 Index 的 View 和一个名为“_Addbook”的 PartialView,它们显示为引导模式。在 partialView 中使用 ajax 形式将数据插入数据库。
索引 View :
<div class="panel panel-primary">
<div class="panel-body">
<div class="btn-group">
<a class="btn btn-primary marginbutoon" id="showBookgroup" data-toggle="modal" asp-action="AddBook"
data-target="#modal-book">
<i class="glyphicon glyphicon-plus"></i>
Add Book
</a>
</div>
</div>
局部 View :
@model WebApplication1.Models.Book
<form asp-controller="Home" asp-action="AddBook" id="myform"
data-ajax="true" data-ajax-method="POST"
data-ajax-mode="replace" data-ajax-update="#myform">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
<h4 class="modal-title" id="myModalLabel">Add Book</h4>
</div>
<div class="modal-body form-horizontal">
<div class="row">
<div class="form-group">
<label asp-for="BookName" class="col-sm-3 control-label"></label>
<div class="col-lg-6">
<input asp-for="BookName" class="form-control" />
<span asp-validation-for="BookName" class="text-danger"></span>
</div>
</div>
</div>
</div>
<div class="modal-footer">
<input type="submit" class="btn btn-primary" value="Submit" />
</div>
Controller :
[HttpGet]
public IActionResult AddBook()
{
var book = new Book();
return PartialView("_AddBooks", book);
}
[HttpPost]
[ValidateAntiForgeryToken]
public IActionResult AddBook(Book model)
{
if (ModelState.IsValid)
{
using (var db = _Context.GetRequiredService<ApplicationDbContext>())
{
db.bookgroups.Add(model);
db.SaveChanges();
}
return RedirectToAction("Index");
}
else
{
return PartialView("_Addbooks", model);
}
}
数据正确存储在数据库中,提交后模式隐藏,但索引 View 显示混合。ajax 提交后如何重定向?
最佳答案
您当前的表单设置为执行 ajax 表单发布。所以当从服务器收到响应时,它会替换表单标签的内部html。因此,对于您当前的代码,它基本上会对 Index 操作进行 GET 调用,并将其响应加载到表单标记中。
如果您想进行重定向,但仍希望模型验证有效,您可以返回一个 View 结果,其中包含一些执行重定向的 javascript 代码。
[HttpPost]
[ValidateAntiForgeryToken]
public IActionResult AddBook(Book model)
{
if (ModelState.IsValid)
{
//Your code to store data
return PartialView("_AddedSuccessfully");
}
return PartialView("_AddBooks", model);
}
并且在 _AddedSuccessfully.cshtml
部分 View 中将只有以下内容,这是重定向到 /Home/Index
<script>
window.location.href = '@Url.Action("Index","Home")';
</script>
编辑:根据评论
how can i make it dynamically. because i have several partial view in my project and i want pass ControllerName and ActionName as a parameters to _AddedSuccessfully.cshtml?
您可以将它从您的 View 传递到操作方法,然后从那里传递到局部 View
只需在添加表单中添加一个隐藏的输入元素,就在您的提交按钮上方,并在成功保存后使用 Url.Action
辅助方法生成您要重定向到的 url。
<input type="hidden" name="redirectUrl" value="@Url.Action("Index","Home")" />
<input type="submit" class="btn btn-primary" value="Submit"/>
现在,向您的操作方法添加一个与隐藏输入同名的新参数。当您为 _AddedSuccessfully
View 调用 PartialView
方法时,将该字符串值作为 View 模型传递。
[HttpPost]
public IActionResult AddBook(Book model,string redirectUrl)
{
if (ModelState.IsValid)
{
// to do : Save
return PartialView("_AddedSuccessfully", redirectUrl);
}
return PartialView("_AddBook", model);
}
现在您需要将分部 View 更新为 string
并使用 View 模型进行重定向。
@model string
<script>
window.location.href = '@Model';
</script>
关于c# - 在 Asp.net Core 中提交 ajax 表单后的 RedirectToAction,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47105352/
这是一些 html
任何人都知道如何制作一个方法(我会把它放在一个扩展类中),它只使用表达式(没有魔术字符串)来做与 mvc 的 RedirectToAction 相同的事情。 所以不要写这样的东西: Redirect
我将通过一个简单的示例展示我正在尝试做什么。 我有路线 routes.MapRoute("", "Message", new { con
我有以下代码: Controller : public ActionResult Step1() { return View(); } [AcceptVerbs(HttpVerbs.P
RedirectToAction 不显示 View 。 // Go populate and display PDF using XML file DoPDF(stXML); } Up
我有 2 个 MVC 项目。其中之一是 API,我想从这个 API 将数据传递到同一解决方案中的另一个项目。怎么可能? 我在 Controller 的头部添加了引用 public class Pros
注意:不是 RedirectToAction() 导致了问题,而是在 web.config 中重写规则 原始问题:使用 RedirectToAction() 时出现奇怪的行为,我无法在本地重现(调试)
为什么这不起作用。当我在我的 Create 方法中重定向时,它一直告诉我编辑需要一个 EditStudyModel。重定向应该执行 get,对吗? public ViewResult Crea
我最近更新了我们工作中的 MVC 2 项目以使用区域,但是我在使用 RedirectToAction 方法时遇到了一点问题。 在我们的区域之外,我们仍然有一些 Controller 等。这些 Cont
有什么区别: public ActionResult logOff() { FormsAuth.SignOut(); return RedirectToAction("index",
我的 MVC 代码哪里做错了?索引 View 包括一个提交给自身的表单,我想要的是 Controller 处理提交的表单然后返回到 View 。 实际发生的是表单被正确处理,但返回的 View 就像什
我有一个从 anchor 调用的操作,Site/Controller/Action/ID,其中 ID 是一个 int。 稍后我需要从 Controller 重定向到同一个 Action。 有没有聪明的
我是asp.net MVC的初学者 我有一个像这样的人类 public partial class Person { public int Id { get; set; } publi
我有一个场景,我在 View 页面上并调用 Controller A 中的操作方法,该方法通过 RedirectToAction 返回调用 Controller B 中的另一个操作,并且此操作返回我已
我正在使用 ASP.NET MVC 3。 我编写了一个辅助类,如下所示: public static string NewsList(this UrlHelper helper) { ret
我已经设置了一些区域,但我不确定如何通过 RedirectToAction 方法重定向到它们。似乎没有我可以提供给它的任何 Area 参数。 谢谢 最佳答案 这也行: return RedirectT
我正在开始使用 ASP.Net core MVC 3.1,并且有一个名为 Foo 的区域: endpoints.MapAreaControllerRoute( name: "Foo",
如果用户登录成功,我会尝试重定向用户,但我页面上的代码似乎阻止重定向工作。如果我删除下面的 jQuery,重定向就会起作用。有人可以告诉我如果我做错了什么吗?谢谢 我有以下操作: [AcceptVer
所以我目前正在开发一个网页,其中有一个包含一些表格数据的表格,表格数据的每一行都有一个按钮,负责启动一个进程,当我单击其中一个按钮时,它会触发一个ajax调用。一旦ajax调用完成,它就会更新网页上的
当调用 Html.DisplayNameFor 时,我们只提供一个 lambda 表达式来呈现,例如,通过 item => Model.Name 呈现学生姓名。由于编译时检查,这种方法非常好。 如何使
我是一名优秀的程序员,十分优秀!