MVC中javascript内容的状态管理

时间:2010-10-26 05:47:08

标签: asp.net-mvc state-management

我正在使用asp.net MVC2。我正面临着javascript内容的状态管理问题。 我有一个图像映射,其中点击图像的各个部分我显示相同的页面(重定向参数)与一些参数,如:Secure / BodyWork?view = 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 个答案:

答案 0 :(得分:1)

您可以使用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);
}

在您的视图中AJAX化图像地图上的链接:

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