asp.net mvc ModelState IsValid - 有效地处理false返回

时间:2014-09-11 08:53:00

标签: javascript jquery asp.net-mvc asp.net-mvc-4

一些同事和我正在使用.net mvc4开发CRUD应用程序。根据客户的选择,有很多动态内容通过jQuery呈现。这个解决方案的问题是我们必须创建大量隐藏的输入来传递附加数据,以防ModelState.IsValid变为false,并使用模型和一些ViewBags重新渲染视图

Q1:动态渲染事物并依赖隐藏的输入而不是利用会话的优势(或者它是一个优势)是不是一种坏习惯吗?

Q2:如果我们不使用表单提交方法,而不是通过jQuery使用ajax请求并通过JSON响应呈现错误(我认为这是一个明确定义的对象),它不应该更有效率整个申请)?

第三季度:与Q2相关 - 转移JSON(键值== ModelProperty - ErrorText)不是更快,而是重新渲染整个视图并通过“电线”发送它吗?

2 个答案:

答案 0 :(得分:2)

关于您的问题2和3:表单和ajax不是互斥的:如果您担心在表单提交时只呈现页面的一部分,您应该使用部分视图和

@using (Ajax.BeginForm(...

而不是

 @using (Html.BeginForm(...

这是mvc的做法。

答案 1 :(得分:1)

听起来像是在寻求一个意见而不是一个答案。

如果是我,我会把自己放在一个角落里,因为我一直在考虑使用Session这样的东西:)。但更严重的是,我会使用AJAX。让javascript在提交时收集您的值,或者将其绑定到javascript视图模型(例如,通过knockoutjs),然后将值作为结构良好的对象提交给服务器。这听起来似乎听起来更加一致。

就个人而言,除了简单的简表格之外,我不会使用表格帖子;简单的键值对是有意义的。在我开始感到复杂性进入表单结构的那一刻,或者我已经不得不向它抛出javascript的那一刻,我就继续使用ajax。特别是如果表单必须在用户填写时更新(例如,返回服务器以重新填充级联下拉菜单) - 那么我只是使用knockoutjs将表单绑定到模型以及当用户我已准备好提交,我的模型生成一个结构良好的请求对象,将其激发到服务器,该服务器自动反序列化为.NET对象,并从那里顺利进行。根据我的经验,这确实增加了编码和技术复杂性。但最终,它解决了比它创造的更多问题,并且通常最终也会成为更好的用户体验。