小编典典

适用于ASP.NET MVC 3的jquery ajax表单

ajax

这可能是一个简单的问题,但对我来说目前还不清楚,我必须把事情整理好……也许有人可以帮我解决这个问题)。

我知道AVC附带了MVC。我知道有Microsoft库,还有jquery。我知道,在MVC
3中,他们引入了不引人注目的javascript,它为html添加了一些特殊标签以进行清理…

但是ist如何一起玩?

示例:我想为每个ajax发布一个远程表单(局部视图)以向博客文章添加评论。而不回发整个页面。

在我的局部视图中,我将使用Ajax.BeginForm()MvcAjax还是Jquery?还是我会Html.BeginForm()在表单的click事件上使用并注册$
.post之类的东西。如果禁用了javascript或不支持javascript,这也将是纯HTML的备用…。

还是一般来说,什么时候使用什么来向博客文章中发布评论?…并且我认为这是正确的,我要发布到commentscontroller的create动作,并且我将使用JsonModelBinder将其转换为模型。之后,我将返回Json并将其添加到我的评论列表中…

这是合理的原因吗?


阅读 205

收藏
2020-07-26

共1个答案

小编典典

那么Ajax.BeginForm()是MvcAjax还是Jquery?

默认情况下是jquery。您需要引用jquery.unobtrusive-ajax.js脚本才能使其工作。

还是我将使用Html.BeginForm()并在Form的click事件上注册类似$ .post之类的东西。

那是另一种选择。我个人就是这么做的。

我认为这是正确的,我要发布到commentscontroller的create动作,并且我将使用JsonModelBinder将其转换为模型。之后,我将返回Json并将其添加到我的评论列表中…

JsonModelBinder已在ASP.NET MVC
3中引入,它允许您将JSON字符串发送到控制器操作,该操作将被映射回视图模型。例如,如果您具有以下视图模型:

public class PersonViewModel
{
    public string Name { get; set; }
    public int Age { get; set; }
}

和以下操作:

public ActionResult Foo(PersonViewModel person) 
{
    ...    
}

在AJAX中调用它的传统方法是:

$.ajax({
    url: '@Url.Action("foo")',
    type: 'POST',
    data: { name: 'john', age: 20 },
    success: function(result) {
        // TODO:
    }
});

在ASP.NET MVC 3中,您可以发送JSON作为请求参数,该参数将绑定到PersonViewModelaction参数:

$.ajax({
    url: '@Url.Action("foo")',
    type: 'POST',
    contentType: 'application/json',
    data: JSON.stringify({ name: 'john', age: 20 }),
    success: function(result) {
        // TODO:
    }
});
2020-07-26