【问题标题】:Pass data from one view to another view -MVC将数据从一个视图传递到另一个视图 -MVC
【发布时间】:2015-03-29 13:20:45
【问题描述】:

将数据从一个视图传输到另一个视图的最佳方法是什么?还是这是不好的做法?

原因是我想将@model.count() 从一个视图显示到主页,基本上是主页上所有视图的摘要。有 tempdata、html.helper 等,但我想知道最好和最可靠的方法。从而避免进一步的问题

这里是有问题的代码

product.cshtml

<p>Total amount of Products = @Model.Count()</p>

我基本上希望在主页上显示相同的值

【问题讨论】:

    标签: c# asp.net-mvc-4 model-view-controller model


    【解决方案1】:

    您必须刷新主页才能真正“更新”值。那时你也可以将值作为参数传回,但我认为这不是你所希望的。

    这可能不是最干净的解决方案,但我认为您希望主页上的文本可以通过一些 javascript/jquery 进行设置。

    主页有这个sn-p:

    <form id="PassBackVals"
    <input type="hidden" name="ProductCount" value="0">
    </form> 
    
    <script>$( ".ProductCount" ).change(function() {
      $("$CurrentProductCount").text = $(".ProductCount").val;
    });
    </script>
    

    并且在主页面上显示文本本身的区域将具有类似于

    的内容
    <p> I'm currently showing <div id="CurrentProductCount">0</div> Products </p>
    

    然后在您的 product.cshtml 中,您将拥有

    <script>$(".ProductCount").val = @Model.Count()
    $( ".ProductCount" ).change();
    </script>
    

    【讨论】:

    • 恐怕没有成功,主页上只显示0,而实际上工作数是24:/
    【解决方案2】:

    好的,我研究了其他方法并通过将 viewbag 后面的代码移动到下面的公共方法中解决了这个问题

        [OutputCache(NoStore = true, Location = OutputCacheLocation.Client, Duration = 10)]
        public ActionResult UpdateTotals()
        {
            JobController j = new JobController();
            ViewBag.JobCount = j.JobCount();
    
            ProductController p = new ProductController();
            ViewBag.ProductCount = p.ProductCount();
    
            return PartialView("UpdateTotals");
        }
    

    然后我将 viewbags 添加到局部视图中并使用 setinterval() javascript,

        <div id ="UpdateTotals">
            @{ Html.RenderAction("UpdateTotals");}
    </div>
    

    <script>
        setInterval("$('#UpdateTotals').load('/home/UpdateTotals')", 10000);
    </script>
    

    我能够根据自己的需要不断刷新数据,而无需通过 javascript 从视图中提取数据。

    希望这对将来的任何人都有帮助:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多