0

我可以成功地对我的 C# 控制器进行 jQuery Ajax 调用并接收回一个 XML 字符串,但我需要反过来收集一些投资组合日期并将它们打包成一个 JSON 对象,以便我可以将它们发送回另一个 C# 控制器。如果这是 C# 问题,那么如果我在错误的论坛中,我深表歉意......但是我想将我的 JSON 对象传递到服务器端控制器......

这是我正在尝试做的事情:

        var nodeDatesJson = {"nodedates":        // CREATE JSON OBJECT OF DATE STRINGS
                            { "date": 01/20/2012,
                              "date": "01/21/2012" } };
        getTradeContribs(thisPfId, nodeDatesJson.nodedates.date);     

现在调用下一个js函数:

 function getTradeContribs(pfid, nodedates) {
        //alert(nodedates);
        $.ajax({                                // GET TRADE CONTRIBS FROM SERVER !!
            url: "/Portfolios/getTradeContribs?portfolioId=" + pfid + "&nodedates=" + nodedates,
            type: "GET",    // or "PUT"
            dataType: "json",               
            async: true,
            success: parseTradeContribs,
            error: function (error) {
                alert("failed in opening Trade Contribs file !!!");
            }
        });
    }
    function parseTradeContribs(data) {
        alert("In parseTradeContribs..." );
        $(data).find("Trade").each(function(){
            $(".TradeContrib").append($(this).text());
        })
    }

并且我的 C# 控制器正在尝试读取“nodedates”JSON 对象,但我该如何读取呢?

   public string getTradeContribs(string portfolioId, **string nodedates**)
        {

            // Build Portfolio Select request here !
            RequestBuilder rzrRequest = new RequestBuilder();

            // REQUEST FOR CONTRIBUTIONS !
            // ... more code here..
            xmlResponse.LoadXml(contribResponse);

            string jsonTest = @" {""nodedates"": ""date"":""01/01/2012""}";

            //return xmlResponse.OuterXml;  // WORKS FINE
            return "<Trade><TradeId>1234</TradeId></Trade>";    // RETURN TEST XML STR

        }

提前谢谢你...鲍勃

4

2 回答 2

1

在 MVC 操作中接收日期列表的最佳方式是绑定到集合。这意味着您应该将日期和其他属性放在具有以下命名约定的表单中:

<input type="hidden" name="dates" value="2012-1-20" />  
<input type="hidden" name="dates" value="2012-1-21" />  

然后你应该序列化这个表单(查看jquery的文档)并将它的数据发布到你的操作中,这将类似于:

public ActionResult getTradeContribs(string portfolioId, IList<DateTime> dates) {
  // Do your work here
}  

你真的应该看看 MVC 模型绑定和集合绑定:
模型绑定到列表
模型绑定对象


另外,如果可以的话,您的 javascript 对象有两个同名的属性,这可能不是您的意思。如果你想在一个对象的某处存储多个日期,你应该使用一个数组:

    var nodeDatesJson = {"nodedates":  
                        [ "01/20/2012", "01/21/2012" ] };  
于 2012-07-27T17:26:42.307 回答
0

对不起,但我不太明白你的疑问......但它是这样的:

也许您应该将格式良好的 json 作为字符串传递并使用一些 C# 解析器。

这样,您可以在服务器端获取与 javascript 中的 Json 对象相同的对象。

=]

于 2012-07-26T21:00:18.843 回答