【问题标题】:MVC 3. Load menu and content separatelyMVC 3. 分别加载菜单和内容
【发布时间】:2013-02-06 18:39:34
【问题描述】:

我有一个包含 3 个部分的应用:

  • 主菜单;
  • 上下文菜单 - 与主菜单中的选定项目相关;
  • 和页面正文 - 与上下文菜单中的选定项目相关;

“主菜单”和“上下文菜单”基于成员资格。我不想在每次页面加载时都加载它们,因为那会消耗资源数据库。 So, I'm using ajax to load main menu only one time, and when an item is selected, I load the context menu for that item.

我的问题是:每个表单的帖子都会删除我的菜单。

问题:我是否必须使用 ajax 构建整个应用程序?我不想那样做,因为在表单中发帖然后使用 ajax 将所有数据发送到控制器太简单了。

到目前为止,我有两个选择:

  1. 使用 ajax 加载我的菜单并使用 IFRAME 加载页面正文,因此帖子不会再次呈现我的菜单。
  2. 使用 ajax 做所有事情;

有没有其他方法可以使用 ajax 加载我的菜单并能够使用表单的帖子?

对不起,如果我不够清楚。

【问题讨论】:

    标签: ajax asp.net-mvc asp.net-mvc-3 iframe


    【解决方案1】:

    让我停顿的句子是“我不想在每次页面加载时都加载它们,因为那会消耗资源数据库。”

    你看,我已经构建了很多应用程序,它们根据用户角色(你所说的会员资格)显示菜单和子菜单。从资源或数据库的角度来看,这从来都不是问题。

    您可以访问所有您需要的会员信息一次,当您使用的正在登录时。在最简单的情况下,用户的身份将与他们拥有的角色一起存储在上下文中(HttpContext .User),因此您根本不需要数据库查找来获取每个请求的此信息。请注意,在这种情况下,也不需要 ajax。

    如果由于某种原因您无法将会员信息存储在这样的上下文中,您仍然可以存储在会话中(如果在内存中)或加密的 Cookie。

    现在,我明白了,我不知道您的方案的所有细节,并且可能在您的方案中,您尝试做的事情是有道理的,但是我建议您重新考虑一下,因为在正常情况下会发生什么您表示是问题(数据库资源)根本不应该是问题。

    底线是:如果您更改应用程序,使其在用户登录时存储会员信息,您将不会遇到问题。

    【讨论】:

      【解决方案2】:

      您不必使用 Ajax 构建所有应用程序。但在这种情况下,Ajax 可能是最好的前进方式。

      以下是我的建议

      1. 为开发人员内部创建数据条目
      2. 为每个输入控制器标记一个类(比如“dataEntry”)
      3. 创建一个 javascript 函数来迭代开发并构建具有类 dataEntry 的所有元素的列表
      4. 使用列表构建一个 json 对象。使用每个元素的名称作为属性名,使用值作为属性值
      5. 使用 jquery ajax 将其发布到控制器操作
      6. [可选] 您可以使用 .done 和 .fail 方法对调用的成功或失败采取措施

      我知道这可能看起来很吓人,但如果您有许多数据输入表单,您可以重复使用此代码。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-04-28
        • 2011-07-14
        • 1970-01-01
        • 1970-01-01
        • 2020-12-03
        • 2011-10-02
        相关资源
        最近更新 更多