是否可以中止 MVC 操作并保持视图不变(无需重写视图的 GET "加载代码")?



在MVC5 Web应用程序上工作。

i具有基于复杂的ViewModel的视图。在主获取方法中,我正在填写此ViewModel,设置某些ViewBag项目等。...我现在将其称为"负载代码"。

因此,我的观点基本上是数据输入表。商业规则相当复杂。当用户键入"保存"按钮时,我进行帖子并运行一些检查规则等的C#代码...如果失败,我只想"流产"操作并向用户显示相同的获取视图。

我的问题涉及最初加载视图所做的一切:ViewBag代码,ViewModel的填充等。...我是否必须在帖子中再次编写此"加载代码"?这似乎很多余。有什么方法可以"流产" ActionResult/post并显示Get View?

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

****更新/澄清 - 根据评论****

我想这个问题更像是一个"一般"。您可以"中止"帖子并"返回"到Get View而不重新运行所有"加载代码"(对于下拉列表,填充ViewModel等。...(

(

如果要转到服务器并进行验证,然后决定是否要接受帖子或失败/流产,并保留所有值然后,我建议您在Ajax中处理此问题。创建第三个操作/API方法,并将验证逻辑保持在那里。然后,在表单上提交命中验证操作,使用AJAX和服务器将返回true/fals(带有任何错误消息(,如果您从服务器中获取true,请让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.
}

让我知道您是否需要更多信息。

最新更新