0

我有一个包含 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 加载我的菜单并能够使用表单的帖子?

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

4

2 回答 2

1

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

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

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

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

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

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

于 2013-02-07T05:21:09.707 回答
0

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

以下是我的建议

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

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

于 2013-02-07T04:43:48.983 回答