【发布时间】:2016-04-18 09:45:54
【问题描述】:
想象以下情况:我想让用户提款。如果成功,我应该将他重定向到名为Index 的HomeController 的操作。如果不是(例如,账户余额小于提款金额),我想显示基于验证的错误。
现在,我无法在项目阶段指定适当的验证规则(因为它不是像 Required 这样的静态规则,所以余额一直在变化),所以我不得不对用户提交进行一些运行时检查.没关系,但现在我开始怀疑在这种情况下是否可以在 sumbit 后不回发页面。
因此,我尝试了@using(Ajax.BeginForm(...){},并且在控制器的适当位置我可以验证用户输入。如果这是不正确的,我可以将错误添加到模型(一般,或某些指定的属性)并返回包含此错误的部分视图,而不会导致页面回发。这与标准 jQuery 验证的行为相同,但当然它并没有真正停止回发,只是显示更新的部分视图。
问题是如果输入正确-然后使用RedirectToAction("Index", "Home") 也会生成Index.cshtml 作为部分视图(因此在这种情况下,我的布局的页眉和页脚加倍)这是可以理解的,因为它仍然是 AJAX 请求。
现在,我的问题是——首先,我是否需要考虑?我的意思是,我只是认为在这种情况下不回发可能对用户更友好。如果是这样,在这种情况下我可以使用其他方法吗?我需要从给定的上下文(如数据库)中获取数据,然后我不能只在客户端停止回发。
【问题讨论】:
-
有点不清楚你想做什么。如果您最终想要重定向,请执行正常提交。在控制器中,您是否进行条件检查,如果无效,请添加
ModelStateError并返回视图以便显示错误(尽管您始终可以创建自己的条件验证属性以便获得客户端验证(或使用 @987654328 @) -
发布后是否可以使用客户端脚本 (javascript) 进行重定向?
标签: asp.net ajax asp.net-mvc