【发布时间】:2010-09-21 18:24:46
【问题描述】:
我正在将一个 ASP.net Web 窗体应用程序移植到 MVC。
应用程序通过Ajax-enabled WCF Web service 和asp:ScriptManager 使用AJAX。我发送一组对象进行服务,它处理得很好。代码示例,
<script type="text/javascript">
$().ready(function () {
var ser = new Services.TasksService();
$('#tasks').tasksgrid(
'newTaskName',
'createTask',
'submitData',
loadData,
submitData,
deleteData
);
function loadData(callback) {
return ser.GetAllTasks(callback, null, null);
}
function submitData(data, callback) {
return ser.Submit(data, callback, null, null);
}
function deleteData(data, callback) {
return ser.Delete(data, callback, null, null);
}
}
);
</script>
WCF 服务端代码:
[ServiceContract(Namespace = "Services")]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class TasksService
{
[OperationContract]
public IList<Task> GetAllTasks()
{
//Code..
}
[OperationContract]
public void Submit(IList<Task> tasks)
{
//Code..
}
[OperationContract]
public void Delete(IList<Task> tasks)
{
//Code..
}
}
提交/删除方法,接收任务对象数组。我在客户端脚本中动态创建这些数组,并将其放入相应的Services.TasksService(没有 $.toJSON 或 JSON.stringly 调用,没有类似的)。 WCF 基础设施很好地处理它,我总是在服务器上得到一个正确的对象。
现在,我正在摆脱 WCF 服务并尝试对 Controller 类做同样的事情。 GetAllTasks 很好..但我完全错过了“接收”数据方法。
在我拥有的控制器中,
[HttpPost]
public JsonResult Submit(IList<Task> tasks)
{
在客户端,
function submitData(data, callback) {
$.post('/Tasks/Submit', JSON.stringify(data), callback, 'json');
}
但是我尝试过的任何事情,我总是收到 null 作为任务对象(因此,数据未绑定)。
我见过Phil Haack post,但如果可能的话,我想避免使用任何额外的程序集。
【问题讨论】:
-
还有什么想法吗,伙计们?正如 Phil Haack 帖子中所建议的那样,似乎只有一种解决方案是使用 MVC Futures。
标签: javascript asp.net asp.net-mvc ajax