net ajax表单,c#-在Asp.net Core中提交ajax表单后,RedirectToAction

我有一个名为Index的视图和一个名为“ _Addbook”的PartialView,该视图显示为引导模式.在partialView中,使用ajax格式将数据插入数据库.

索引视图:

Partialview:

@model WebApplication1.Models.Book

data-ajax="true" data-ajax-method="POST"

data-ajax-mode="replace" data-ajax-update="#myform">

控制器:

[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())

{

db.bookgroups.Add(model);

db.SaveChanges();

}

return RedirectToAction("Index");

}

else

{

return PartialView("_Addbooks", model);

}

}

数据已正确存储在数据库中,并在提交后隐藏模式,但索引视图显示已混合.

Ajax提交后如何重定向?

解决方法:

您当前的表单已设置为执行Ajax表单发布.因此,当从服务器接收到响应时,它将替换form标记的内部html.因此,使用您当前的代码,它基本上将对Index动作进行GET调用,并将其响应加载到form标记中.

如果您想进行重定向,但仍想进行模型验证,则可以返回视图结果,其中包含一些执行重定向的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部分视图中将仅包含以下内容,这是用于重定向到/ Home / Index的javascript

window.location.href = '@Url.Action("Index","Home")';

编辑:根据评论

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?

您可以将其从视图传递到操作方法,再从该视图传递到局部视图

保存成功后,只需在“提交”按钮上方的“添加”表单中添加一个隐藏的输入元素,然后使用Url.Action帮助器方法生成要重定向到的URL,即可成功保存.

现在,向您的操作方法添加一个与隐藏输入同名的新参数.当您为_AddedSuccessfully视图调用PartialView方法时,将该字符串值作为视图模型传递.

[HttpPost]

public IActionResult AddBook(Book model,string redirectUrl)

{

if (ModelState.IsValid)

{

// to do : Save

return PartialView("_AddedSuccessfully", redirectUrl);

}

return PartialView("_AddBook", model);

}

现在,您需要udpate要强类型化为字符串的部分视图,并使用该视图的模型进行重定向.

@model string

window.location.href = '@Model';

标签:razor,asp-net-core-mvc,c

来源: https://codeday.me/bug/20191025/1929678.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值