您的位置:首页 > Web前端 > JQuery

jQuery + ASP.NET MVC Ajax的简单实现

2010-03-29 11:09 826 查看
前台的实现很简单

 

function alartmessage() {
$.ajax({
url: "<%= Url.Action("Say", "Ajax") %>",
type:"POST",
success: function (data) { alert(data.name); }
});
}
function divhtml() {
$.ajax({
url: "<%= Url.Action("UserSay","Ajax") %>",
type: "POST",
data: {"username":"Dr.Worm","chat":"hello world!"},
success: function (data) {
$("#message")
.append(data.username);
}
});
}


使用的POST方式,在ASP.NET MVC2中使用Get方式会有一些小问题,看后台代码

public ActionResult Say()
{
return this.Json(new {name = "Dr.Worm",worm = "Programer"});
}
public ActionResult UserSay(AjaxSayModel model)
{
return this.Json(new { username = model.username + "Server", chart = model.chat + "Server" });
}

public ActionResult text(string name, string user)
{
return this.Json(name + user, JsonRequestBehavior.AllowGet);
}


上面是Controller中的代码

public class AjaxSayModel
{
[Required]
public string username { get; set; }
public string chat { get; set; }
}
public class AjaxContainModel
{
[Required]
public string oparate { get; set; }
public string parameter { get; set; }
}


上面是Model的代码,很实现容易。

 

整体

前台发送一个Ajax请求,MVC框架捕获后,直接交给Controller处理,Post回的数据也被Asp.net mvc 框架自动传递给Model,使用起来还是很方便的。

而采取GET方式实现AJAX的时候,如果返回一个Json表达式,问题就出现了,ASP.NET MVC2出于安全的考虑会禁止使用GET方式,解决方式如代码

public ActionResult text(string name, string user)
{
return this.Json(name + user, JsonRequestBehavior.AllowGet);
}


为Json()加入第二个参数:JsonRequestBehavior.AllowGet即可。

可以看到,通过带参数的Action可以读取到Get方式传入的数据。

 

另外就是前台不要忘记如下代码

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<AjaxChat.Models.AjaxSayModel>" %>


只有这样Post数据才能自动传递给Model。

 

不过我一直也没有找到一个方法让一个View绑定两个Model,请高手们指教,感激不尽!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐