【问题标题】:MVC convention rules - model binding - theoryMVC 约定规则 - 模型绑定 - 理论
【发布时间】:2012-03-26 17:53:48
【问题描述】:

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

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

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

我的问题是——从设计的角度来看,这是一个好的做法吗?通过使用 jquery,页面不会刷新 - 当我选择各种用户时,网格保持不变......效果很好,但我不禁怀疑我是否违反了模型绑定约定。

【问题讨论】:

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


    【解决方案1】:

    据我所知,这听起来不错。您正在使用 jQuery AJAX 执行 GET 请求以获取一些 HTML(您的 MVC 3 Razor 生成的),然后将其嵌入到页面中,可能会替换一些内容。您还使用 @model 进行绑定,天啊effing天啊,我看到我的开发者份额在他们应该使用的时候使用。

    当然,根据框架(以及您遵循的严格程度),您可能会违反某些原则,但如果您问我,您正在做什么很好。这听起来像是我为解决用例而编写的解决方案:

    1. 无需重新加载页面即可加载用户详细信息

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

    无论您使用什么框架,它很可能都会遵循这些原则。

    现在,代码质量和效率:这是完全不同的野兽。您可能正在做正确的事情,但不是以正确的方式。如果你明白我的意思。

    编辑

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

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

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

    【讨论】:

    • 感谢您的回答,理查德。那就是想法模型在页面加载时填充网格。 Jquery 用于在不刷新网格的情况下填充网格下的 div..我不能再次使用相同的“@model”来绑定网格下的内容...除非我应该只使用简单的 jquery 来填充和交互这页纸。我问自己,当我可以使用 jquery、html 直接输出时,我为什么要使用 @model 来绑定网格……
    • 您可以使用@model,就像我最初认为的那样 --- 您使用 AJAX 调用的操作可以生成一个 cshtml 视图,您的脚本可以直接放在页面上。 那个 cshtml 可以有一个@model 绑定。
    • Richard - 有没有你提到的任何我可以学习的样本?
    • 我现在没有任何想法或准备,但我会尽力回复您。
    猜你喜欢
    • 1970-01-01
    • 2022-07-08
    • 1970-01-01
    • 2011-08-22
    • 2012-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多