与之前保存预览MVC3表(MVC3 Form with Preview before save)

2019-10-19 07:44发布

我目前正在制定关于MVC3和应用程序:

  1. 我在其中用户正在完成每个寄存器形式的形式。
  2. 再次当他点击一个按键记录被传递给控制器​​和存储在列表中,然后传递给视图来显示的结果是什么momment在“缓冲”预览
  3. 未用于避免其dissapear编辑和只显示(以前寄存器)的数据在多个步骤使用hiddenfor preserverd
  4. 最后,用户可以保存所有的元素列表数据库中的点击另一个按钮时

我的问题是:有办法保持在列表中的数据,而不必做hiddenfor在每一步每一个元素?

Answer 1:

为您的列表中的会话变量。

Session["MyList"] = myList;

后来你“恢复”你的名单如下:

var myList = Session["MyList"] as List<MyType>;

如果你添加一些代码的我可以调整这个满足您的实际情况。



Answer 2:

我认为你可以使用向导技术来做到这一点。所以首先你需要找到一个精灵插件。 例如jQuery的步骤 。 其中每一个步骤,你将有你需要的形状和你有两个选择: 与会议的工作是这样的:

   public YourObject GetObjectfromSession()
            {
                var obj = new YourObject();
                if (HttpContext.Session["SessionName"] != null)
                {
                    obj= (VmSysMealCreate)HttpContext.Session["SessionName"];
                }
                return obj;
            }

            public void InsertObjectTOSession(YourObject obj)
            {
                HttpContext.Session.Add("SessionName", obj);
            }

在每一步改变,你可以验证表单并提交给法控制器在那里你会拯救这个不是数据库,而是session.And在最后一步,你可以做一个总结所有你形成。 这是很好的解决方案,这将是很容易实现,并将努力nice.But使用此解决方案,你需要想想你多久需要session来保存你的数据,因为会议将有时间限制。

第二件事情,你可以做:使用向导插件,在最后一步,你可以得到你所有的形式和各形态,你可以这样做:

function functionNAme(formId) {

    var form = jQuery("#" + formId);
 if (form.valid()) { //If form is valid
        form.submit();
        return isValid;
    }
    var isValid = false;

    form.submit(function (e) {
        var that = this;
        jQuery.ajax({
            url: this.action,
            type: this.method,
            data: jQuery(this).serialize(),
            async: false,
            /* cache: false,*/
            success: function (result) {
               //on post method return result (summary view ofr each form )
              //and you can append it to your last step
                }
                return false;
            }
        });
        // unbind form submit event
        form.unbind(e);
        // preventing default
        e.preventDefault();
        // cancel the default submission of the form
        return false;
    });   
}

第二种解决方案是好的,但也不是那么容易实现希望这将锄头你,你会做出正确decision.If你会发现花药的解决方案请向我们提供它。



文章来源: MVC3 Form with Preview before save