【问题标题】:How can I reload a div with a PartialView in ASP.NET MVC using jQuery?如何使用 jQuery 在 ASP.NET MVC 中重新加载带有部分视图的 div?
【发布时间】:2009-09-16 14:40:48
【问题描述】:

我有一个 div,在页面某处有一个部分的内部。我在按钮上有一个事件。我如何编写一个 Javascript 来获取 div 并重新加载它并重新加载部分视图。

我对此有另一种看法。但我现在不能这样做。但我需要同样的事情发生,只由 jQuery 执行,而不是直接在页面中执行。我可以在 jQuery 脚本中运行类似的 ajax 代码,因为它的 javascript 也不是吗?

<%  using (Ajax.BeginForm("EditFeiertag", new AjaxOptions { InsertionMode = InsertionMode.Replace, UpdateTargetId = "feiertage" }))
    {  %>
<div id="feiertage">
    <% Html.RenderPartial("FeiertagTable"); %>
</div>
<%  } %>

如果我可以通过启动点击事件或类似的方式运行上面的脚本,我会帮助我

【问题讨论】:

    标签: jquery asp.net-mvc ajax partial-views


    【解决方案1】:

    让我们从一些基本的控制器动作开始:

    public class FeiertagController
    {
        IFeiertagService feiertagService = new FeiertagService();
    
        public ActionResult EditFeiertag()
        {
            // ... return your main edit view
            return View();
        }
    
        // Will be called by your jquery ajax call
        public PartialResult GetFeiertagTable()
        {
            var feiertagData = messageService.getLatestFeiertagData();
            var viewModel = new FeiertagViewModel();
            feiertagViewModel.feirtagTableData = feiertagData;
    
            return PartialView("FeiertagTableView", viewModel);
        }
    
    }
    

    所以,EditFeiertag() 用于渲染整个编辑页面,当页面想要异步渲染部分视图时,它会调用 GetFeiertagTable()。

    现在,在你看来,假设你有类似的东西:

    <div id="Container">
        <div id="LeftPanel">
            // ... Some menu items
        </div>
        <div id="RightPanel">
            <a id="ReloadLink" href="#">Reload Table</a>
            <div id="FeiertagTable>
                <% Html.RenderPartial("FeiertagTable", Model.feiertagTableData); %>
            </div>
        </div>
    </div>
    

    这可以正常工作,并且会加载您的表格一次。但是,如果您单击某个元素(在我们的例子中为 #ReloadLink),您希望使 Feiertag 表重新加载。

    将以下内容添加到页面的 部分:

    <head>
            <script src="../../Scripts/Jquery/jquery-1.3.2.min.js" type="text/javascript"></script>
            <script type="text/javascript">
                jQuery(document).ready(function($) {
                    $('#ReloadLink').click(function(e)
                    {
                        e.preventDefault();  // stop the links default behavior
                        $('#FeiertagTable').load('/Feiertag/GetFeiertagTable');
                    });
                });
            </script>
    </head>
    

    然后将为您的重新加载链接在单击事件上添加一个事件,该事件将调用 jquery load() 方法。该方法是一个简化的 ajax get 请求,它将用返回的内容替换所选 div (FeiertagTable) 的内容。

    我们的 GetFeiertagTable() 控制器操作将返回部分视图,然后将其插入到该 div 中。

    我希望这能让你指出正确的方向!

    【讨论】:

      猜你喜欢
      • 2011-03-31
      • 1970-01-01
      • 2014-08-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-05
      • 2018-11-16
      相关资源
      最近更新 更多