【问题标题】:How can I set a variable in my pages javascript based on my controller action in ASP.NET MVC?如何根据我在 ASP.NET MVC 中的控制器操作在我的页面 javascript 中设置变量?
【发布时间】:2009-12-21 20:37:12
【问题描述】:

所以,我有一个如下所示的页面: alt text http://img704.imageshack.us/img704/5973/croppercapture3.png

这是我的基本消息收件箱。我现在有 2 页,收件箱和已发送(最终会有其他页面)。它们都共享相同的视图,并且只有 2 个不同的操作来填充适当的数据。

右侧的元素(消息列表)是一个局部视图,其数据基于我的两个控制器操作 Inbox(int?page) 和 Sent(int?Page) 填充。

所以,我在收件箱/已发送之间共享了一个视图“MessageView”和一个局部视图“MessageList”。

但是,我现在必须让那些箭头按钮(““)使用 Ajax 工作。我知道如何很好地使用 jQueries ajax 调用,并且我知道如何呈现操作调用的结果(返回部分视图)。

问题来自于进行这些分页ajax调用的javascript需要知道两件事:

  • 当前页面是什么(无论是 /messages/inbox 还是 /messages/sent)
  • 当前页面是什么(在查询字符串中指定,即 /messages/inbox?page=2)。

如果不知道我在哪个页面上(收件箱或已发送),它就不会知道在哪个 url 上进行 ajax 调用。它应该回发到/messages/inbox 还是/messages/sent?

如果我不使用 Ajax 加载这些消息,那么只需将适当的 url 加载到“”按钮的链接标签中即可。但我不能,因为我的部分要求规定它必须加载下面的消息,而不会明显地刷新到新页面。

【问题讨论】:

    标签: c# javascript jquery asp.net-mvc


    【解决方案1】:

    在 JavaScript 中,您可以检查 window.location.pathname 以查看当前页面 URL 的路径名部分。

    window.location.search 为您提供查询字符串。

    【讨论】:

      【解决方案2】:

      当用户单击收件箱或已发送按钮时,您需要重写箭头中的 URL,以便它们指向正确的位置。

      【讨论】:

      • 当他们点击箭头时,它没有跟随链接。我正在做一个 jquery ajax 调用来加载下面的消息。那么,重写网址对我有什么帮助?
      • 另外,如果他们访问 www.mysite.com/messages/sent 会怎样。 javascript 现在需要知道发送的页面是直接加载的。因为用户没有点击菜单上的“发送”。
      • 那么你可以只为他们重写 onclick 事件。 $('#nextArrow').bind('click', {box:myBox, page:myPage}, function(e) { doMyAjaxCall(e.data.box, e.data.page); })
      猜你喜欢
      • 1970-01-01
      • 2014-10-10
      • 2017-08-20
      • 1970-01-01
      • 2018-10-14
      • 1970-01-01
      • 1970-01-01
      • 2016-05-10
      • 1970-01-01
      相关资源
      最近更新 更多