我可以成功地对我的C#Controller进行jQuery Ajax调用并收回一个XML字符串,但我需要收集一些投资组合日期并将它们打包成一个JSON对象,这样我就可以将它们发送回另一个C#Controller 。 如果这是一个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对象,但是 HOW 我是否已将其读入?
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
}
提前谢谢你...... 鲍勃
答案 0 :(得分: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模型绑定和集合绑定:
Model binding to a list
Model binding objects
另外,如果可以的话,你的javascript对象有两个同名的属性,这可能不是你的意思。如果要将多个日期存储在对象中的某个位置,则应使用数组:
var nodeDatesJson = {"nodedates":
[ "01/20/2012", "01/21/2012" ] };
答案 1 :(得分:0)
很抱歉,但我不太了解你的疑问......但是这里有:
也许你应该将格式良好的json作为字符串传递并使用一些C#解析器。
这样,您可以在服务器端获取与javascript中的Json对象相同的对象。
=]