MVC约定规则 - 模型绑定 - 理论

时间:2012-03-26 17:53:48

标签: jquery asp.net-mvc asp.net-mvc-3 model-binding

我正在开发一个MVC 3项目。到目前为止,我正在使用模型(@model)绑定来填充剃刀网格上的项目。我不得不做一些头疼。从网格中,我使用jquery点击事件选择一个人。在网格下,将显示该行的所有相关信息。即,选择一个人的名字。在网格下,div变为可见并显示有关该人的各种信息 - 名称,地址等。

但是,我使用jquery,$ .ajax,loadJSON来填充那个div中的HTML控件。我调用了名为public JsonResult GetCurrentUser(string p_userid)的动作控制器。现在所有这些都很有效,让我担心 - 我做对了吗?

对于网格,我使用模型绑定来绑定cshmtl页面上的网格(@model),但是我使用jquery来填充div - 已授予,我仍然使用JsonResult操作中的模型来填充div。

我的问题是这个 - 理论上从设计的角度来看,这是一个好的做法吗?通过使用jquery,页面不会刷新 - 当我选择不同的用户时,网格保持完整...工作得很好但我不禁想知道我是否打破了模型绑定约定。

1 个答案:

答案 0 :(得分:1)

据我所知,听起来不错。您正在使用jQuery AJAX执行GET请求以获取某些HTML(您的MVC 3 Razor生成),然后将其嵌入到页面中,可能会替换某些内容。你也使用@model约束,耶稣效力基督,我看到我的开发者的份额在他们应该的时候使用。

当然,根据框架(以及你对它的严格程度),你可能与某些原则发生冲突,但是如果你问我,你正在做什么,因为它是很好。这听起来像是我用来解决用例的解决方案:

  1. 在不重新加载页面的情况下加载用户详细信息

  2. 不在初始页面加载中加载所有用户详细信息。

  3. 无论你使用什么框架,无论如何都很可能会采用这些方式。

    现在,代码质量和效率:这是一个完全不同的野兽。你可能正在做正确的事情,但不是以正确的方式。如果你得到我的漂移。

    修改

    在再次阅读您的问题之后,我意识到您在父@model上使用的是cshtml,而不是在AJAX编辑cshtml上。虽然这可行,但我对此有两个顾虑:

    1. @model不会对您的AJAX数据产生影响。完全没用。需要考虑的事情。

    2. 其次,结合第一点,听起来你有两个独立的逻辑管理数据。一个是Razor模型绑定(生成,我认为,你的初始布局),两个是AJAX调用和负责格式化数据的jQuery。我建议你只坚持使用一个,但是再一次,这在某种程度上依赖于用例。