【问题标题】:Pass dictionary of data to MVC view from controller "synchronously"将数据字典从控制器“同步”传递到 MVC 视图
【发布时间】:2013-02-13 08:33:44
【问题描述】:

我的视图显示多个案例的结果,所以我有大约三种类型的结果面板

并且每个结果都应显示与结果面板类型匹配的所有项目

  • 我制作了一个局部视图来显示每个项目
  • 创建一个 for 循环以显示每个结果面板中的所有项目
  • 具有三个结果面板的视图
  • 每个面板 - 编码为 html div - 具有子项目的部分视图

我想做的是找到传递一个以字符串类型作为键的字典和我的项目列表 - 列表 - 并在每个部分控制调用中传递一个带有类似面板的字典项目

<%= Html.Partial("myPartialControl",myDictionary["KindOfPanel"] %>

那么如何将字典同步传递给我的视图呢? 这个问题有什么好主意吗?特别是洞视图应该每 5 秒刷新一次!喜欢使用 json 或任何 ajaxing 解决方案。

【问题讨论】:

  • 我可能遗漏了一些东西,但你不能简单地将字典作为参数传递给控制器​​中的 View() 吗?
  • 是的,我可以,但很抱歉在问题中缺少同步单词
  • 你的意思是异步的吗?我想你想在页面加载到浏览器之后异步加载部分视图的内容,对吧?
  • 不行,我需要每5秒同步刷新一次页面内容,无需重新加载页面

标签: c# asp.net-mvc asp.net-mvc-3 asp.net-mvc-partialview


【解决方案1】:

这个词是异步的。

如果您只想更新页面的一部分而不重新加载整个页面,那么使用 AJAX 异步完成。

如果在第一种情况下,您有一个执行此操作的视图(基于上述)

...bla
<div id="my-container">
   <%= Html.Partial("myPartialControl",myDictionary["KindOfPanel"] %>
</div>

然后在你的控制器中创建一个看起来像这样的动作:

public ActionResult MyPartialControl()
{
    return PartialView("myPartialControl", theData);
}

然后添加以下JQuery函数,并在需要时触发:

 $('.my-trigger').click(function(){
      $.get('@Url.Action("MyPartialControl")', function(data) {
         $('#my-container').html(data); 
      });
 });

在没有编译器的情况下编写我没有测试过这个,但它应该可以工作,显然可以填补空白并试一试,但这是一般的想法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-23
    • 2013-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多