----------------------------

渲染一个Action:@{Html.RenderAction("Rulelist", "AjaxReuqestData",new { area = "AjaxTest" });}

public ActionResult Rulelist()
{
List<HomeRuleList> homeRuleLists = GetHomeRuleLists();
return PartialView(homeRuleLists);
}

@using MyLoveApp.Models
@model List<HomeRuleList> //MODEL

----------------------------------------

url.Action的使用:注意加''号

$.ajax({
url: '@Url.Action("Rulelist", "AjaxReuqestData", new { area="AjaxTest"})',
type: "Post",
success:function(data){
$("#content").html(data);
}
});

------------------------------------

js触发一个事件()

trigger()方法触发事件后,会执行浏览器默认操作。例如:

$("input").trigger("focus");

以上代码不仅会触发为<input>元素绑定的focus事件,也会使<input>元素本身得到焦点(这是浏览器的默认操作)。

如果只想触发绑定的focus事件,而不想执行浏览器默认操作,可以使用jQuery中另一个类似的方法——triggerHandler()方法

$("input").triggerHandler("focus");

$("h2").click(function () {
$("h1").trigger("click");
});

-----------------------

经常传值类型:ViewBag,ViewData,TempData他们都可以存对象    ViewData[key] as Type  可以强类型转换

经常赋予值类型:model,string,Dictionary<T,type>,list<T>

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传递,并且每个元素最多只能访问一次。之后自动删除

  • ViewData和TempData是字典类型,赋值方式用字典方式, ViewData["myName"]
  • ViewBag是动态类型,使用时直接添加属性赋值即可 ViewBag.myName。
  • ViewBag和ViewData只在当前Action中有效,等同于View
  • TempData可以通过转向继续使用,因为它的值保存在Session中。
  • 但TempData只能经过一次传递,之后会被系统自动清除.
  • ViewData和ViewBag 中的值可以互相访问,因为ViewBag的实现中包含了ViewData

------------------------------------------

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<HomeRuleList> homeRuleLists = GetHomeRuleLists();
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{
@price
}
}
 @: 免费  输出文字
 
@helper辅助方法
其实声明@helper辅助方法的语法与在c#中声明方法的方式非常像,唯一的差别在于不用回传任何类型,预设就是网页输出。如果要将这个@helper辅助方法用于多个不同的view页面里,可以考虑独立出来放在专案根目录app_code下,这个独立的文件后缀必须为cshtml,做法:先添加一个app_code文件夹,再在添加--》新建项--》MVC4布局页 这一项 并命名为UIHelper.cshtml(可取其他名)
这时就可以把刚下好的@helper 原封不动的移到这个文件里,最后当我们再调用的时候改成@UIHelper.ShowPrice(item.Price)即可
 
 
@Html.Raw(<标签 style='font-size:12px;'>描述文字</标签>) 原样输出

最新文章

  1. 浅谈Linux中的信号处理机制(一)
  2. 深入理解JavaScript系列:JavaScript的构成
  3. HDU Math Problems
  4. sql server 内置ETL工具学习(一) BCP篇
  5. Delphi实现无标题有边框的窗体
  6. Jasper_table_Cloud not resolve style(s)
  7. How can I get an object's absolute position on the page in Javascript?
  8. VNC VIEWER的使用集锦
  9. c#使用DotNetZip封装类操作zip文件(创建/读取/更新)实例
  10. bzoj2005 NOI2010 方案统计
  11. Android开发优化之——使用软引用和弱引用
  12. 17_Android中Broadcast详解(有序广播,无序广播)最终广播,Bundle传递参数,传递参数的时候指定权限
  13. Python 爬虫——抖音App视频抓包
  14. 清除cookie
  15. chrome 如何开启网页另存为.mhtml 功能
  16. [Leetcode 15]三数之和 3 Sum
  17. 2、JDBC-CURD
  18. eclipse中一个项目引用另一个项目的方法(申明:来源于网络)
  19. [Objective-C] id类型和instancetype类型
  20. 4.Dubbo2.5.3集群容错和负载均衡

热门文章

  1. android 服务与多线程
  2. Django创建项目及app
  3. Java7、Java8 安装卸载问题
  4. php远程下载文件
  5. iOS 开发实践之 Auto Layout
  6. Django 后台管理 之登录和注销
  7. CEF与MLS快速交换对比
  8. XML文件的特点
  9. 【HDU 3487】Play with Chain Splay
  10. wingide 显示中文 及 配色方案