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

渲染一个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;'>描述文字</标签>) 原样输出

MVC实用笔记的更多相关文章

  1. MVC实用构架设计(三)——EF-Code First(6):数据更新最佳实践

    前言 最近在整理EntityFramework数据更新的代码,颇有体会,觉得有分享的价值,于是记录下来,让需要的人少走些弯路也是好的. 为方便起见,先创建一个控制台工程,使用using(var db ...

  2. MVC实用架构设计(三)——EF-Code First(5):二级缓存

    前言 今天我们来谈谈EF的缓存问题. 缓存对于一个系统来说至关重要,但是是EF到版本6了仍然没有见到有支持查询结果缓存机制的迹象.EF4开始会把查询语句编译成存储过程缓存在Sql Server中,据说 ...

  3. MVC实用架构设计(三)——EF-Code First(4):数据查询

    前言 首先对大家表示抱歉,这个系列已经将近一个月没有更新了,相信大家等本篇更新都等得快失望了.实在没办法,由于本人水平有限,写篇博客基本上要大半天的时间,最近实在是抽不出这么长段的空闲时间来写.另外也 ...

  4. MVC实用架构设计(三)——EF-Code First(3):使用T4模板生成相似代码

    前言 经过前面EF的<第一篇>与<第二篇>,我们的数据层功能已经较为完善了,但有不少代码相似度较高,比如负责实体映射的 EntityConfiguration,负责仓储操作的I ...

  5. MVC学习笔记

    7 天玩转 ASP.NET MVC 阅读笔记 1.Web Form的问题 1.响应慢,web控件转化成html需要时间 2.带宽消耗,页面保存web控件的状态(viewstate) 3.由web控件生 ...

  6. MVC学习笔记索引帖

    [MVC学习笔记]1.项目结构搭建及单个类在各个层次中的实现 [MVC学习笔记]2.使用T4模板生成其他类的具体实现 [MVC学习笔记]3.使用Spring.Net应用IOC(依赖倒置) [MVC学习 ...

  7. .NET MVC学习笔记(一)

    看了些关于MVC的资料,做一些MVC的笔记. 分解关注点 在MVC世界里有个很重要的观念--"分解关注点"(Separation of Concerns),指的是:当你进行软件开发 ...

  8. vim实用笔记

    vim实用笔记   真是不知不觉过了一年,前段时间忙着考试什么的,没再写笔记写博客,考完又懒懒地玩了几天.这几天其实都在读别人的博客,感受一下大神的工作和生活感悟,感受一下过来人的经历和经验,对自己总 ...

  9. ASP.NET MVC学习笔记-----Filter2

    ASP.NET MVC学习笔记-----Filter(2) 接上篇ASP.NET MVC学习笔记-----Filter(1) Action Filter Action Filter可以基于任何目的使用 ...

随机推荐

  1. 已知段地址,求CPU寻址范围

    已知段地址为0001H,仅通过变化偏移地址寻址,则CPU的寻址范围是? 物理地址 = 段地址×16 + 偏移地址 所以物理地址的范围是[16×1H+0H, 16×1H+FFFFH] 也就是[10H×1 ...

  2. 如何利用Windows System Image Manager制作一个answer file

    打开Windows System Image Manager 从菜单中创建一个新的Answer File 在窗体左下部的Windows Image处右键,选择菜单Select Windows Imag ...

  3. CentOS下配置静态IP

    第一.在VMware中进行配置使用桥接的方式.点击编辑选择虚拟网络编辑器 选择桥接模式,选择桥接到外部的网卡.选择我们主机下的网卡 第二步.配置虚拟机使用桥接模式 第三步:启动虚拟机进入到 /etc/ ...

  4. okhttp 请求list数据实例

    public class DataBean { /** * id : 61684 * movieName : <猜火车2>先导预告片 * coverImg : http://img31.m ...

  5. NiFi汉化

    ①在源文件中的 source-nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-ui/src中修 ...

  6. HDU4511 小明系列故事——女友的考验 —— AC自动机 + DP

    题目链接:https://vjudge.net/problem/HDU-4511 小明系列故事——女友的考验 Time Limit: 500/200 MS (Java/Others)    Memor ...

  7. 使用aspnet_regiis.exe重新注册.NET Framework

    cd  C:\Windows\Microsoft.NET\Framework64\v4.0.30319  aspnet_regiis.exe -i     重新安装IIS以后,需要用aspnet_re ...

  8. haproxy 修改 访问路径

    # 匹配 jsessionid,并去除 jessionid参数reqrep ^([^\ :]*)\ /a/test.html;jsessionid=.*\?(.*) \1\ /b/test.html? ...

  9. python的tkinter对话框

    import tkinter.messagebox #这个是消息框,对话框的关键 root = tkinter.Tk() root.withdraw() a=tkinter.messagebox.sh ...

  10. ES禁用_source不会影响聚合

    From Elasticsearch's website: The _source field contains the original JSON document body that was pa ...