1

我环顾四周,无法找到我的问题的答案。jquery 和 mvc3 的新手,如果很明显很抱歉。

$.post('@Url.Action("EditPost", "Task")', { "fc": document.getElementById("#myForm")});

我正在尝试将更改保存到一行并刷新部分视图而不发回整个页面。

使用上面的代码行,我试图在控制器中执行一个操作结果,但它似乎正在寻找一个名为 EditPost 的视图,而不是在任务控制器中寻找一个名为 EditPost 的方法,这正是我想要做的。有人可以帮我解决这个问题吗?

4

2 回答 2

4

尝试像这样使用:

$.post('@Url.Action("EditPost", "Task")', $('#myForm').serialize(), function(data){
    $('#form').children().remove().append(data);
}, 'html');

您需要指定它返回的 dataType 是 html (部分视图),并且document.getElementById("#myForm")不可能得到任何东西,因为#除非您使用 jquery 选择器,否则您不会使用,即使您删除#,您也会得到表单元素而不是它的内容。因此,您可以$('#myForm').serialize()将其所有内容序列化为帖子或获取数据。

于 2011-11-02T14:08:43.547 回答
2

document.getElementById("#myForm") ????

如果您想使用 AJAX 提交整个表单:

$('#myForm').submit(function() {
    $.ajax({
        url: this.action,
        type: this.method,
        data: $(this).serialize(),
        success: function(result) {
            alert('success');            }
    });
    return false;
});

这假设您的控制器操作采用包含多个属性的整个视图模型,以从表单的输入字段的值绑定到:

public ActionResult EditPost(MyViewModel model) 
{
    ...
}

或仅某些输入的值:

var url = '@Url.Action("EditPost", "Task")';
var fc = $('#fc').val();
$.post(url, { fc: fc }, function(result) {
    alert('success');
});

这假设您的控制器操作fc作为参数:

public ActionResult EditPost(string fc) 
{
    ...
}
于 2011-11-02T14:05:05.057 回答