繁体   English   中英

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

[英]asp.net mvc ModelState IsValid - handle the return on false efficiently

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

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

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

问题3:与Q2相关 - 传输JSON(键值== ModelProperty - ErrorText)不是更快,而是重新渲染整个视图并通过“线路”发送它吗?

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

@using (Ajax.BeginForm(...

代替

 @using (Html.BeginForm(...

这是mvc的做法。

听起来你要求的意见不仅仅是答案。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM