我正在开发一个MVC 3项目。到目前为止,我正在使用模型(@model)绑定来填充剃刀网格上的项目。我不得不做一些头疼。从网格中,我使用jquery点击事件选择一个人。在网格下,将显示该行的所有相关信息。即,选择一个人的名字。在网格下,div变为可见并显示有关该人的各种信息 - 名称,地址等。
但是,我使用jquery,$ .ajax,loadJSON来填充那个div中的HTML控件。我调用了名为public JsonResult GetCurrentUser(string p_userid)的动作控制器。现在所有这些都很有效,让我担心 - 我做对了吗?
对于网格,我使用模型绑定来绑定cshmtl页面上的网格(@model),但是我使用jquery来填充div - 已授予,我仍然使用JsonResult操作中的模型来填充div。
我的问题是这个 - 理论上从设计的角度来看,这是一个好的做法吗?通过使用jquery,页面不会刷新 - 当我选择不同的用户时,网格保持完整...工作得很好但我不禁想知道我是否打破了模型绑定约定。
答案 0 :(得分:1)
据我所知,听起来不错。您正在使用jQuery AJAX执行GET请求以获取某些HTML(您的MVC 3 Razor生成),然后将其嵌入到页面中,可能会替换某些内容。你也使用@model
约束,耶稣效力基督,我看到我的开发者不的份额在他们应该的时候使用。
当然,根据框架(以及你对它的严格程度),你可能与某些原则发生冲突,但是如果你问我,你正在做什么,因为它是很好。这听起来像是我用来解决用例的解决方案:
在不重新加载页面的情况下加载用户详细信息
不在初始页面加载中加载所有用户详细信息。
无论你使用什么框架,无论如何都很可能会采用这些方式。
现在,代码质量和效率:这是一个完全不同的野兽。你可能正在做正确的事情,但不是以正确的方式。如果你得到我的漂移。
在再次阅读您的问题之后,我意识到您在父@model
上使用的是cshtml
,而不是在AJAX编辑cshtml
上。虽然这可行,但我对此有两个顾虑:
@model
不会对您的AJAX数据产生影响。完全没用。需要考虑的事情。
其次,结合第一点,听起来你有两个独立的逻辑管理数据。一个是Razor模型绑定(生成,我认为,你的初始布局),两个是AJAX调用和负责格式化数据的jQuery。我建议你只坚持使用一个,但是再一次,这在某种程度上依赖于用例。