【发布时间】:2014-09-12 07:04:43
【问题描述】:
我正在开发一个 Asp.net MVC 应用程序。在我的项目中,我使用了一个名为 Dhtmlx Scheduler 的第三方 JavaScript 库。
这个库中有一个函数,然后将调度器上的所有数据写入XML格式。
然后我需要处理这些数据,并在我的视图页面上写回<textarea>。
到目前为止,这就是我所拥有的:
查看:
function save() {
var url = "/Home/Save"
var xml = scheduler.toXML();
$.ajax({
url: url,
Type: "POST",
dataType: 'json',
async: false,
data: { xmlString: xml },
contentType: 'application/json; charset=utf-8',
success: alert("File Saved in C:\\ Drive as Tasks.xml")
});
}
控制器:
public ActionResult Save(string xmlString)
{
XmlDocument doc = new XmlDocument();
try
{
doc.LoadXml(xmlString);
}
catch(Exception e)
{
Console.WriteLine(e);
}
doc.Save(@"C:\\Tasks.xml");
W6ViewModel viewModel = new W6ViewModel();
viewModel.engineers = db.W6ENGINEERS.ToList();
viewModel.tasks = db.W6TASKS.ToList();
viewModel.skills = db.W6TASKS_REQUIRED_SKILLS1.ToList();
viewModel.categories = db.W6TASKTYPECATEGORY.ToList();
gatherInfo(viewModel);
return View("Index", viewModel);
}
当尝试保存三个事件(Dhtmlx 对象)时,它可以完美运行,当尝试向 XML 添加更多数据时,我收到此错误(从 FireBug 读取):
此请求的查询字符串长度超过了配置的 maxQueryStringLength 值。
任何帮助将不胜感激。 谢谢!
Firebug 控制台:
【问题讨论】:
-
你是在用 FireBug 模拟 POST 吗?
-
你看过here
-
在萤火虫中 - json 是在正文请求中发送的吗?如果是,您应该尝试直接从请求
Stream获取正文内容,而不是通过活页夹。 -
@pwas 和我本质上要问的是:数据是如何发送到您的控制器的?您的错误表明它是作为查询字符串而不是 HTTP POST 正文内容发送的。
-
这就是问题所在 - 您正在制作
GET而不是POST。首先,将$.ajax中的Type改为type。其次,将HttpPost属性添加到您的操作中。如果没有这个,操作将仅适用于GET请求。
标签: c# javascript asp.net ajax asp.net-mvc