代码之家  ›  专栏  ›  技术社区  ›  Dr. Rajesh Rolen

MVC中javascript控件的状态管理

  •  0
  • Dr. Rajesh Rolen  · 技术社区  · 14 年前

    我有一个图像地图,在其中点击图像的不同部分,我显示了相同的页面(参数重定向)一些参数,如:安全/车身?视图=7 基于参数视图中的值,我在页面上显示了各种内容。在那个内容中,我有一些复选框,我选中并显示在左侧的一个div(选中的一个)。 问题是当我点击图像的另一部分(图像地图)时,它会用不同的“view=?”将我重设到同一页值,但释放当前div的状态(其中包含上一页的选中复选框的名称)。

    我的继承行是这样的:

    Inherits="System.Web.Mvc.ViewPage<List<WBAC.Models.BodyWorkModel>>"
    

      public ActionResult BodyWork(string view)
        {
     SecureModelService service = new SecureModelService();
            return View(service.ListBodyWork(view));
       }
    
          [HttpPost]
        public ActionResult BodyWork(BodyWorkModel model1)
        {
            //some code
        }
    

    我试过使用隐藏字段,所以我在其中放置了当前页面复选框的名称,但当我单击图像映射时,这些名称当然会丢失值,因为页面重定向到当前页面。

    我也尝试过使用ajax.beginform,但它也不起作用,因为我们在单击图像映射时正在重定向页面(到具有不同参数的相同页面,如:view=3/view=4)。

    请给我建议我该换什么和怎么做。

    谢谢

    目标div中的代码:

    <div class="damageAreaMid" id="dvdamageAreaMid">
                            <% foreach (var item in Model)
                               { %>
                            <div class="area">
                                <h2>
                                    <%: item.Component %></h2>
                                <% Html.RenderPartial("~/Views/Shared/UCWorkArea.ascx", item.VehicleOption(item.ComponentID, item.Component));%>
    
    
                            </div>
                            <% } %>
                        </div>
    
    1 回复  |  直到 14 年前
        1
  •  1
  •   Darin Dimitrov    14 年前

    您可以使用AJAX,只刷新页面中需要刷新的部分。

    public ActionResult BodyWork(string view)
    {
        SecureModelService service = new SecureModelService();
        return View(service.ListBodyWork(view));
    }
    
    public ActionResult BodyWork(BodyWorkModel model)
    {
        //some code
        return PartialView(model);
    }
    

    $(function() {
        $('#somecontainer a').click(function() {
            $('#someresultcontainer').load(this.href);
            return false;
        });
    });