----------------------------
渲染一个Action:@{Html.RenderAction("Rulelist", "AjaxReuqestData",new { area = "AjaxTest" });}
public ActionResult Rulelist()
{
List
return PartialView(homeRuleLists);
}
@using MyLoveApp.Models
@model List
----------------------------------------
url.Action的使用:注意加''号
$.ajax({
url: '@Url.Action("Rulelist", "AjaxReuqestData", new { area="AjaxTest"})',
type: "Post",
success:function(data){
$("#content").html(data);
}
});
------------------------------------
js触发一个事件()
trigger()方法触发事件后,会执行浏览器默认操作。例如:
$(``"input"``).trigger(``"focus"``);
以上代码不仅会触发为元素绑定的focus事件,也会使元素本身得到焦点(这是浏览器的默认操作)。
如果只想触发绑定的focus事件,而不想执行浏览器默认操作,可以使用jQuery中另一个类似的方法——triggerHandler()方法
$(``"input"``).triggerHandler(``"focus"``);
$("h2").click(function () {
$("h1").trigger("click");
});
-----------------------
经常传值类型:ViewBag,ViewData,TempData他们都可以存对象 ViewData[key] as Type 可以强类型转换
经常赋予值类型:model,string,Dictionary
ViewBag和ViewData生命周期相同,仅对当前View有效
TempData保存在Session中,Controller每次执行请求的时候,会从Session中先获取TempData,而后清除Session,获取完TempData数据,虽然保存在内部字典对象中,但是其集合中的每个条目访问一次后就从字典表中删除。
具体代码层面,TempData获取过程是通过SessionStateTempDataProvider.LoadTempData方法从ControllerContext的Session中读取数据,而后清除Session,故TempData只能跨Controller传递一次。
如果我们想读取TempData的值但是又不让它被删除,可以使用TempData.Peek("Key")方法。如果想再保持一次TempData里面的值,可以使用TempData.Keep("Key").
TempData: 保存在session中,controller每次执行请求时,会从Session中获取Tempdata(),而后清除session,
获取完TempData数据,虽然保存在内部字典中。但字典中每个条目访问一次后就从字典中删除。因此Tempdata数据最多只能经过一次controller传递,并且每个元素最多只能访问一次。之后自动删除
------------------------------------------
html.helper:
@Html.EditorFor(model => model.Time)编辑框
@Html.ValidationMessageFor(model => model.Time)验证合法性错误显示
@Html.LabelFor(model => model.Time)标签
@Html.ValidationSummary(true)}用于客户端验证
@Html.DisplayFor(modelItem => item.Title)是显示列的内容
@Html.DisplayNameFor(model => model.Title)是显示列名,
-----------------------------------------------
Ajax.helper:
@Ajax.ActionLink("Ajax渲染页面", "Rulelist","AjaxReuqestData", new { area="AjaxTest",date=DateTime.Now.ToString()}, new AjaxOptions { HttpMethod = "Post",
InsertionMode=InsertionMode.Replace,UpdateTargetId="content2"}) 回传到当前页面的一个div
如果需要ajax回传的数据必须及时更新,那么就必须调整你的Action方法定义,新增一个OutputCache属性,强迫浏览器不要缓存这一页的要求
[OutputCache(NoStore = true, Duration = 0)]
public ActionResult Rulelist()
{
List
return PartialView(homeRuleLists);
}
表单
@using(Ajax.BeginForm(new AjaxOptions{ UpdateTargetId="now"}))
实例:
@Ajax.ActionLink("删除数据",“GetTime”,new {controller="Home",id=3,new AjaxOptions{OnSuccess="Delete" ,Confirm="您确定要删除吗?", HttpMethod="POST",LoadingElementId="ajaxLoad"}})
@Ajax.ActionLink执行流程
1,用户单点击超链接
2,对超链接上的href属性定义的Action网址发出HTTP要求
3,取回内容后再将内容填入AjaxOptions物件的UpdateTargetId属性所指定的id元素中
@Ajax.BeginForm执行流程
1,用户送出表单
2,对表单元素上的action属性的Action网址发出http要求,并将表单所有数据传过去,
3,取回内容后再将内容填入ajaxOptions物件的UpdateTargetId属性所指定的id元素中。
了解AjaxOptions类型
无论使用Ajax.ActionLink 或者Ajax.BeginForm,都需要传入AjaxOptions的物件当参数,这个参数将决定asp.net mvc的ajax如何运作。
AjaxOptions属性名称
Confirm执行ajax之前会跳出一个确认对话框
HttpMethod设定http的设定方法
InsertionMode设定通过Ajax的辅助方法取回数据时,要如何将数据新增至UpfateTargetId(缩写为UTI)指定的元素中,有以下三种:
InsertionMOde.Replace:取代UTI的内容(预设)
InsertionMOde.InsertBefore:在UTI之前插入
InsertionMOde.InsertAfter 在UTI之后插入
LoadingElementId 在ajax尚未完成所有工作前显示的元素id值
OnBegin设定开始时要执行的js函数名称
OnComplete设定结束时要执行的js函数名称
OnFailure设定失败时执行的
OnSuccess 设定完成时要执行的js函数名称
UpdateTargetId设定回传值要显示在哪一个id上
URL 设定ajax的请求网址
当使用OnBegin,OnComplete,OnFailure,OnSuccess 这四个属性时,如果指定的函数名称不存在网页中,就会发生js错误
--------------------------------------------
URL辅助方法:
输出当前控制器下名称为About的Action
@Url.Action("About");
/Home/About
输出当前控制器下名称为About的Action 并且带有参数id
@Url.Action("About",new {id=1})
/Home/About/1
输出指定控制器下名称为About的Action
@Url.Action("About","Home")
/Home/About
输出指定控制器下名称为About的Action并带有参数
@Url.Action("About","Home",new {PageNo=1})
/Home/About?PageNo=1
路由方法
@Url.RouteUrl("路由名称",new {id=123})
/root/Home/HelperSample/123
@Url.RouteUrl("路由名称",new {id=123},"https")
https://localhost/root/Home/HelperSample/123
静态文档方法
除了上面两种方式之外,mvc还提供一个Url.Content辅助方法,可以用来产生网站里静态档案的路径
假如我们需要/Images/Logo.png这个图档的地址
则@Url.Content("~/images/Logo.png")
@Url.Encode("我是谁")
@foreach(var item in Model){
<标签tr>
<标签td>@item.Name标签td>
<标签td>@ShowPrice(item.Price)标签td> 调用方法
标签tr>
}
@helper ShowPrice(int price){
if(price==0){
@:免费
}else{
}
}
@: 免费 输出文字
@helper辅助方法
其实声明@helper辅助方法的语法与在c#中声明方法的方式非常像,唯一的差别在于不用回传任何类型,预设就是网页输出。如果要将这个@helper辅助方法用于多个不同的view页面里,可以考虑独立出来放在专案根目录app_code下,这个独立的文件后缀必须为cshtml,做法:先添加一个app_code文件夹,再在添加--》新建项--》MVC4布局页 这一项 并命名为UIHelper.cshtml(可取其他名)
这时就可以把刚下好的@helper 原封不动的移到这个文件里,最后当我们再调用的时候改成@UIHelper.ShowPrice(item.Price)即可
@Html.Raw(<标签 style='font-size:12px;'>描述文字标签>) 原样输出
手机扫一扫
移动阅读更方便
你可能感兴趣的文章