2017-05-03 55 views
2

使用MVC5 web应用程序。可能放弃MVC操作并保持视图相同(不重写视图的GET“加载代码”)?

我有一个基于复杂的视图模型视图。在主要的GET方法中,我填充了这个视图模型,设置了某些ViewBag项目等......我现在将其称为“加载代码”。

所以,我的观点基本上是一个数据输入形式。业务规则相当复杂。当用户点击保存按钮时,我会执行POST并运行一些检查规则等的c#代码。如果失败,我只想“中止”操作并向用户显示相同的GET视图。

我的问题涉及到的一切事,最初加载视图:该ViewBag代码视图模型的填充,等....我一定要在我的文章写一遍这个“荷载规范”?这似乎非常多余。有没有一种方法可以“中止”ActionResult/POST并显示GET视图?

我希望这是有道理的。谢谢!

****更新/澄清 - 基于评论****

我想这个问题,更多的是“一般”之一。你能“中断”的帖子,并走“回”到GET查看,而无需重新运行所有的“荷载规范”(对于下拉菜单,填充视图模型等....)

+0

发表一些代码。 – Mardoxx

+0

有很多方法可以解决这个问题。但没有你的控制器方法的代码示例(我想你有一个控制器)很难给出正确的答案。 – Calvijn

+1

首先,尽可能使用客户端验证和ajax,以避免完整返回。其次,将视图模型加载到像“LoadCustomerViewModel”这样的过程中。 –

回答

0

如果你想要去以服务器和验证,然后决定是否要接受这个职位或失败/中止,并保持前一页面的所有值 那么我会建议你在AJAX处理这个问题。 创建第三个动作/ API方法并在那里保存验证逻辑。然后在表单提交中使用ajax命中验证操作,如果您从服务器获得True,服务器将返回True/False(带有任何错误消息),然后让javascript发布您的表单,否则显示任何错误消息并返回false以停止发布表单并留在页面上。 例如使用javascript方法进行验证。

<form onsubmit="return isValidForm()" /> 

功能

function isValidForm(){ 
    //// hit the server and see if you want to proceed with the POST 
    //// if fails return false so your form will not be posted and all of your values will remains the same, here before return false you can clear the form if needed. 
} 

让我知道如果你需要更多的信息。

相关问题