c#如何接受js返回ScriptObject对象存储的json数据

  最近在做一个关于企业新闻的功能,新闻嘛,必然是富文本的形式,所以采用了sl与js结合的技术,主要考虑了html富文本编辑器。在开发的过程中碰到了几个问题,差了很多资料,终于找到了办法在后台处理从前端返回来的json数据。在这里提醒大家一下,英语好,搞程序的话真的占很多优势,可以随意的查英文资料。

  下面先说一下我的问题,我需要的是从在一个弹出框中,点击关闭按钮,返回一些列的json数据。开始在做的时候,程序返回的是一个scriptobject对象,查了很多资料都没有介绍如何从这个对象中解析出来想要的数据。后来在stackoverflow上找到了老外的解决办法。

  

    <script type="text/javascript">

        function ReturnValue(xmlContent,title,date,istop) {

            //alert(xmlContent.toString());

            var bp = { "content": xmlContent, "title": title, "date": date, "istop": istop };

            window.returnValue = bp;

            window.close();

           }

    </script>

  js方法是在后台调用的。。

            if (!Page.IsClientScriptBlockRegistered("aa"))

            {

                ClientScript.RegisterClientScriptBlock(ClientScript.GetType(), "aa", "<script type=\"text/javascript\">ReturnValue('" + model.Content + "','"+model.Title+"','"+model.Date+"','"+model.IsTop+"');</script>");

            }

  上面的代码是写在一个button的click事件中的。。因此,点击button之后会执行前台的js代码。那么窗体关闭之后,我们是如何的接受返回来的值呢?接着往下看:

        public static object GetEditNews()

        {

            object XmlHttpObj = HtmlPage.Window.Invoke("showModalDialog", "./Msg/WebFm/frmNewsEdit.aspx", "", "dialogWidth:650px;dialogHeight:580px;resizable:no");



            if (XmlHttpObj != null)

            {

                return XmlHttpObj;

            }

            return null;

        }

  上面是在sl中利用window对象与js交互,并得到返回来的对象。

  

                                ScriptObject XmlHttpObj = BillHelpers.GetEditNews() as ScriptObject;

                                if(XmlHttpObj!=null)

                                {

                                    JsonObj model = XmlHttpObj.ConvertTo<JsonObj>();

                                    string shotview="";

                                    if(!string.IsNullOrEmpty(model.content))

                                    {

                                        shotview=model.content.Substring(0,10);

                                    }

                                }

  看了上面的代码,有的同学会有点茫然了,JsonObj是个什么东东。接下来就到了关键的地方了,当我们从前台返回来的是一个json对象时,可以将返回来的对象反序列话为我们预先定义好的实体。

    [DataContract]

    public struct JsonObj

    {

        [DataMember]

        public string content;



        [DataMember]

        public string title;



        [DataMember]

        public string date;

        [DataMember]

        public string istop;

    }

  再与我们在前台定义的json数据对比一下,

 var bp = { "content": xmlContent, "title": title, "date": date, "istop": istop };

  ok,为了以后查询方便,写得不好请见谅。谢谢

你可能感兴趣的:(object)