MVC ActionResult -- JavaScriptResult,JsonResult以下是ActionResult的继承图: 大概的分类:
JavaScriptResult查了很多的资料都没有发现JavaScriptResult的实际用法,而且还发现了很多不建议使用JavaScriptResult的文章,因为这样脚本和后台不分离。 很多文章是按一下方式来使用JavaScriptResult的: Action public ActionResult GetTime() { var script = string.Format("$('#myPnl').html('{0}');", DateTime.Now); return JavaScript(script); } View @Html.ActionLink("Click Me", "GetTime") 这样的执行结果是页面并不会执行这一段script,而是将这段script作为文件Response出来。 既然执行GetTime这个Action其实取得script这段脚本的文件,那么就可以这样来使用: <script src="@Url.Action("GetTime")" type="text/javascript"></script> 这样的结果就是该script段可以调用GetTime Action返回的代码段。 遗留的问题: 在MVC3中,如果引用了jquery.unobtrusive-ajax,那么使用@Html.ActionLink的时候页面会报JavaScript脚本错误,原因未知。 JsonResult大家都知道AJax是使用Json来传输数据的,Json数据在JavaScript中被广泛使用,所以JsonResult的使用范围是非常管的,下面代码演示了在MVC的Ajax.ActionLink中如何使用JsonResult Action [HttpPost] public ActionResult GetDetail() { return Json(new { UserName = "Test User Name", Email = "Test@Test.com", Desc = "Test Desc" }); } View <script type="text/javascript"> function handleSuccess(context) { $("#userName").html(context.UserName); $("#email").html(context.Email); $("#desc").html(context.Desc); } </script> <table> <tr> <td> UserName </td> <td> <div id="userName" /> </td> </tr> <tr> <td> Email </td> <td> <div id="email" /> </td> </tr> <tr> <td> Desc </td> <td> <div id="desc" /> </td> </tr> </table> @Ajax.ActionLink("Click Me", "GetDetail", new AjaxOptions { HttpMethod = "POST", OnSuccess = "handleSuccess" }) 在点击ActionLink后,会调用GetDetailAction返回JsonResult,在OnSuccess方法中可以对返回的结果进行处理。 当然要使用以上功能需要引用以下文件: <script src="@Url.Content("~/Scripts/jquery-1.4.4.min.js")" type="text/javascript"></script> <script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script> <script src="@Url.Content("~/Scripts/MicrosoftAjax.js")" type="text/javascript"></script> <script src="@Url.Content("~/Scripts/MicrosoftMvcAjax.js")" type="text/javascript"></script> 以上使用方法是在MVC3上测试通过的,但是在参考MVC2的代码时,发现用法上有以下差异: 在MVC2中是不支持jquery.unobtrusive-ajax.min.js的,返回的context也需要做以下处理, <script type="text/javascript"> function handleSuccess(context) { var json = context.get_data(); var data = Sys.Serialization.JavaScriptSerializer.deserialize(json); $("#userName").html(data.UserName); $("#email").html(data.Email); $("#desc").html(data.Desc); } </script> Celery 标签: MVC
标签: MVC
|
|
来自: Wiley Library > 《Web》