xiaolizi007
11/25/2016 - 6:37 AM

asp.net Mvc Helper

Razor Helper #asp.net

//以前需要这样写
<script src="@Url.Content("~/Script/site.js")"></script>
//现在仅需要这样写就行了,因为Razor可以正常的解析 ~/
<script src = "~/Script/site.js"></script>
@{
     string s ="super xiao lizi"; 
     @s; // 里面的这个@代表着在页面上输出这个s // 我记得实际是给了Response.write
}
//razor中的js无法使用@符号
//要么使用\\u0440来代替,要么使用@@来代替,用前者解析器不会报错
//Ajax.ActionLink
@Ajax.ActionLink(
    "测试ajax",
    "ajax",
    "Home",
    newAjaxOptions(){
        Confirm="您确定要跳转吗?",
        UpdateTargetId="testajax",
        HttpMethod="GET",
        InsertionMode=InsertionMode.Replace,
        Confirm ="您确定要跳转吗?",   //获取或设置提交恳求之前,显示在确认窗口中的消息。
        HttpMethod="GET",  // 获取或设置 HTTP 恳求办法(“Get”或“Post”)。
        InsertionMode=InsertionMode.Replace,  // 获取或设置指定如何将响应插入目标 DOM 元素的模式,InsertAfter,InsertBefore , Replace
        LoadingElementId="",  // 获取或设置加载 Ajax 函数时要显示的 HTML 元素的 id 特点。
        OnBegin="",   //获取或设置更新页面之前,正好调用的 JavaScript 函数的名称。
        OnComplete="",     //获取或设置实例化响应数据之后但更新页面之前,要调用的 JavaScript 函数。
        OnFailure="",  // 获取或设置页面更新失败时,要调用的 JavaScript 函数。
        OnSuccess="",  //获取或设置成功更新页面之后,要调用的 JavaScript 函数。
        UpdateTargetId="",  // 获取或设置要应用办事器响应来更新的 DOM 元素的 ID。
        Url="",  //获取或设置要向其发送恳求的 URL。
        }
    );
//在模板页layout中这样写,就可以包含前台的中定义的@Section xxx代码
@RenderSection("name",required :false)
@RenderSection("scri",required :false)

@section name// 注意section是小写的
{ 
 <style>.... </style>
}
ModelState.AddModelError("Title","What a terrible name!");
@Html.RadioButton("Active","true") yes
@Html.RadioButton("Active",false,true) 
@Html.RadioButton();    // 显示的是一个input RadioButton控件
@Html.Button();    // 显示的是一个input Button控件
@Html.DropDownList();     //显示的是一个input DropDownList控件
@Html.Hidden();     //显示的是一个input Hidden控件
@Html.ValidationMessage();     //显示的是一个input ValidationMessage控件
@Html.BeginForm("ActionName","ControllerName",FormMethod.method);     显//示的是一个input BeginForm控件,优化内存的控件,避免内存泄漏
@Html.DisplayFor(modelitem=>item.content);   //显示的列的内容   
@Html.DisplayNameFor(model=>model.Title);  //显示的是列名
@Html.Raw(ViewBag.ss);//直接使用@ViewBag.ss来显示只能显示源代码,使用@Html.Raw可以讲ViewBag中的html代码解析为页面
@Html.EditorFor(model=>model.Title,xxxx)
@Html.ValidationMessageFor(model=>model.Title,xxxx)
@Html.LabelFor(model=>model.content)
@Html.TextArea("area",null,new{ id="ta"}); // area是名字,null是传入的字符串,new下的是属性
@Html.CheckBoxFor(modelItem=>item.Checkd)    //这个真强,一步写出带有返回值的代码,而且可以在control中直接使用,很好很强大
@Url.Content//可以将ViewBage传回来的~符号给删掉,清理出一个干净的url相对路径给src用 <img src="@Url.Content(ViewBag.ImageUrl)" alt="Alternate Text" />

//RenderPage用法
@RenderPage("~/Views/Shared/_Header.cshtml")
//正常解析含有html的代码需要
@Html.Raw(ViewBag.ss);
//直接使用@ViewBag.ss来显示只能显示源代码,像这样
@ViewBag.ss
//使用Scripts.Render()引入脚本
@sectionScrits{ @Scripts.Render("~/bundles/jquery") }


//DropDownListFor
<td> @Html.DropDownListFor(
    model => model[i].AdDirectoryViewModel.AccountType,
    ViewData["accounttypes"] as List<SelectListItem>, 
    "--请选择账户类型--", 
    new {@class = "dropdown", onchange = "ChangeCompanies()"}
    ) 
</td> 

//DropDownListFor级联
@Html.DropDownListFor(
    model => model[i].UIViewModel.Dept, 
    new List<SelectListItem> {  
        new SelectListItem() { 
            Text = "请选择", 
            Value = (null as bool?).ToString() }}, 
            "--请选择部门类型--", 
            new { @class = "dropdown", id = "depts", onchange = "ChangeTitles()" }
            )
//避免CRSF攻击
//微软定义了一个HTTP-onlycookie特性来检测cookie是否发生了变化
//前端的cshtml页面需要声明一下这个
@Html.AntiForgeryToken();

//后端每一个model字段上,要使用
[ValidateAntiForgeryToken]
//使用[ValidateAntiForgeryToken]属性来验证Token
//MVC使用Ajax.BeginForm上传图片时HttpPostedFileBase file为null,Request.Files获取不到文件
//问题分析是页面中存在jquery.unobtrusive-ajax.js文件,注释后能够获Html.ActionLink方法Html.ActionLink("linkText","actionName")

Html.ActionLink("linkText","actionName","controlName")
Html.ActionLik("linkText","actionName",routeValues)    // routeValue可以向action传递参数,如Html.ActionLink("detail","Detail",new { id=1}),会生成 <a href="Products/Detail/1">detail</a>
Html.ActionLink("linkText","actionName",routeValues,htmlAttributes) // htmlAttribute可以设置<a>标签的属性,如下面的例子
Html.ActionLink("detail","Detail",new{id=1},new{ target="_blank",@class="className"}),<a href="Products/Detail/1" target="_blank">detail</a>,
//Ajax.ActionLink
@Ajax.ActionLink(
    "测试ajax",
    "ajax",
    "Home",
    newAjaxOptions(){
        Confirm="您确定要跳转吗?",
        UpdateTargetId="testajax",
        HttpMethod="GET",
        InsertionMode=InsertionMode.Replace,
        Confirm ="您确定要跳转吗?",   //获取或设置提交恳求之前,显示在确认窗口中的消息。
        HttpMethod="GET",  // 获取或设置 HTTP 恳求办法(“Get”或“Post”)。
        InsertionMode=InsertionMode.Replace,  // 获取或设置指定如何将响应插入目标 DOM 元素的模式,InsertAfter,InsertBefore , Replace
        LoadingElementId="",  // 获取或设置加载 Ajax 函数时要显示的 HTML 元素的 id 特点。
        OnBegin="",   //获取或设置更新页面之前,正好调用的 JavaScript 函数的名称。
        OnComplete="",     //获取或设置实例化响应数据之后但更新页面之前,要调用的 JavaScript 函数。
        OnFailure="",  // 获取或设置页面更新失败时,要调用的 JavaScript 函数。
        OnSuccess="",  //获取或设置成功更新页面之后,要调用的 JavaScript 函数。
        UpdateTargetId="",  // 获取或设置要应用办事器响应来更新的 DOM 元素的 ID。
        Url="",  //获取或设置要向其发送恳求的 URL。
        }
    );