比起Web Form開發,在後端(.cs)寫法上大同小異,可選擇C#或VB.NET來撰寫;而在前端(.cshtml、.vbhtml)則有比較大的差別,自 MVC3版本後,就以Razor為前端檢視引擎,本篇就針對前端語法在撰寫時常犯的錯誤及重點做說明。

 
(1) 註解
在以往.aspx檔案,我們習慣以html主解 /* */ 或是使用.net註解<%-- --%>
而在.cshtml中,則使用@* 此行為註解 *@ 來表示。
 
 
(2) 在前端(*.cshtml)撰寫後端(*.cs)語法 
以往在Web Form專案時,如果需要將.cs語法寫在aspx,就會寫成:
<% Response.Write("Hello  World"); %>
而在.cshtml則會改成 @{ xxx; },如下:
@{  Response.Write("Hello  World"); }
需注意結尾需加分號「;」否則會出錯。
 
另外,如果使用@ViewBag或是Html Helper時,結尾則不需加分號,如下:
@ViewBag.Say
@Html.BeginForm()
@Html.ActionLink("Add Member", "Edit", "Travel")
 
值得一提的是,使用Razor語法@時,後面的字母需緊鄰在@後,不能有空格否則會出錯。舉上例為例
@ViewBag.Say不能寫成 @ ViewBag.Say
@Html.BeginForm() 不能寫成@ Html.BeginForm()
@Html.ActionLink("Add Member", "Edit", "Travel")不能寫成@ Html.ActionLink("Add Member", "Edit", "Travel")
 
 
(3) 引用外部JavaScript或CSS檔案
Razor有個寫法Url.Content()是將相對路徑轉為絕對路徑,與Server .Mapth()相似,語法如下:
 <script type="text/javascript" src="@Url.Content("~/Scripts/jquery-1.7.1.min.js")"></script>
 
(4) 導頁寫法
如在前端需要增加按鈕或連超來執行導頁,可以有以下做法:
 
1. Link
@Html.ActionLink("Add Member", "Edit", "Travel")
參數1為link名稱
參數2為action名稱,也就是controller裡的method名稱
參數3為controller名稱
 
* 延伸說明
在.Net MVC寫法中,有overloading的參數指定到action或是controller時,
都是先指定action,再指定controller,例如:
@Html.ActionLink("Add Member", "Edit", "Travel")
@Html.BeginForm("Edit", "Travel", FormMethod.Post)
@Url.Action("Index","Mail")
 
2. Button
如欲顯示按鈕時,導向的頁面可使用@Url.Action(action,controller) 來指定。
<input type="button" value="重新填寫" onclick="javascript:window.location='@Url.Action("Edit", "USERLOG")'" />
*如要action到原來的controller,則可省略第二個參數,直接寫成@Url.Action("Edit")即可。
 
(5) 輸出JavaScript
在網路上參考眾多文章後,最後還是習慣TempData來輸出,TempData生命週期只存在一個Request,適合做錯誤或訊息的輸出,方式如下:
 
Controller:
1 public ActionResult Delete(ContactUs us)
2        {
3   //判斷資料更新成功與否
4            if (_IMailRepository.UpdateMailStatus(us, 2) > 0)
5                TempData["Msg"] = "更新成功!";
6            else
7                TempData["Msg"] = "更新失敗!";
8            return View("Index");
9        }
 
View (Index.cshtml):
1 <script type="text/javascript"><![CDATA[  
2     var msg= "@TempData["Msg"]"
3     if(msg!=""){alert(msg);}  
4 ]]></script>
參考網址: http://msdn.microsoft.com/zh-tw/library/dd394711(v=vs.100).aspx

Razor button的更多相关文章

  1. Blazor入门笔记(2)-分部类组件与组件的继承

    1.前言 本文接自Blazor的组件(1)-从0构建一个组件 2.分部类组件 Razor组件你可理解为就是一个类名与文件名相同的类,因此,可以新建一个同名的partial类,将组件中@code里面的代 ...

  2. MAUI Blazor 权限经验分享 (定位,使用相机)

    入门文章 Blazor Hybrid / MAUI 简介和实战 https://www.cnblogs.com/densen2014/p/16240966.html 在 Mac 上开发 .NET MA ...

  3. ASP.NET Core 中文文档 第四章 MVC(3.2)Razor 语法参考

    原文:Razor Syntax Reference 作者:Taylor Mullen.Rick Anderson 翻译:刘怡(AlexLEWIS) 校对:何镇汐 什么是 Razor? Razor 是一 ...

  4. CKEditor Html Helpers for ASP.NET MVC3 Razor/WebForms Views

    一.原生方法: 在 razor 中 使用Fckeditor 编辑内容,需要引入js <script src="@Url.Content("~/fckeditor/fckedi ...

  5. 实例演示 kino.razor (前端 Javascript 模板工具,Razor 风格)的使用

    前言 对于习惯了 ASP.NET MVC Razor 模板引擎的人来说,比如我,一直在寻找前端 Javascript 端的 Razor 模板工具.这之前,我也了解到很多Javascript 端的模板工 ...

  6. Razor视图引擎语法

    @{ Layout = null; } <!DOCTYPE html> <html> <head> <meta name="viewport&quo ...

  7. Introduction to ASP.NET Web Programming Using the Razor Syntax (C#)

    1, http://www.asp.net/web-pages/overview/getting-started/introducing-razor-syntax-c 2, Introduction ...

  8. ASP.NET MVC Razor视图引擎攻略

    --引子 看下面一段MVC 2.0的代码. <%if (Model != null){%> <p><%=Model%></p><%}%>&l ...

  9. ASP.NET Mvc Razor视图语法

    在ASP.NET MVC中有两套模版引擎,一套是ASPX,一套是Razor,从事过WebForms开发的朋友们,对于ASPX模版已经很熟悉了,下面我说一下我所熟悉的Razor模版引擎的一些语法,供大家 ...

随机推荐

  1. PyMOTW: heapq¶

    PyMOTW: heapq — PyMOTW Document v1.6 documentation PyMOTW: heapq¶ 模块: heapq 目的: 就地堆排序算法 python版本:New ...

  2. UVA - 11388 GCD LCM

    II U C   ONLINE   C ON TEST  Problem D: GCD LCM Input: standard input Output: standard output The GC ...

  3. 无向图的最短路径算法JAVA实现(转)

    一,问题描述 给出一个无向图,指定无向图中某个顶点作为源点.求出图中所有顶点到源点的最短路径. 无向图的最短路径其实是源点到该顶点的最少边的数目. 本文假设图的信息保存在文件中,通过读取文件来构造图. ...

  4. hive字符串函数

    1. 字符串长度函数:length 语法: length(string A) 返回值: int 说明:返回字符串A的长度 举例: hive> select length('abcedfg') f ...

  5. Codeforces 452A Eevee

    #include<bits/stdc++.h> using namespace std; string m[]={"vaporeon","jolteon&qu ...

  6. SurfaceView的一个小应用:开发示波器

    SurfaceView与普通View还有一个重要区别:View的绘图必须在UI线程中进行,但SurfaceView不存在这个问题,因为它是由SurfaceHolder来完成的.所以对于View组件,如 ...

  7. 在Apache上架设SVN使得可以通过http来使用SVN

    弄了一下午,终于搞定了.找到一篇好的博客.分享出来: 宇哥搞了个论坛网站,我的svn使用不了了,我把svn重新架设到apache后,又可以通过http访问svn了. .安装 Apache http:/ ...

  8. 碎碎念,浅饮-------Day30

    这不是关于技术的文章,它偏离了我原来的计划轨迹.但,我相信这将是远远超出了技术的意义使我无论什么价格值. 高考已经开始,不知道在这片宁静的夜空下有多少人已经美美的睡了,香甜憨然.又有多少人这睡着的眼角 ...

  9. 用css3实现各种图标效果

    原文:用css3实现各种图标效果 公共样式 应该说现在绝大多数公司的项目前端都是一团乱,不仅仅是js写的没有任何框架而言,css同样也是如此,导致项目如果要升级或者说有新的变更维护起来就特别困难. 最 ...

  10. U14Linux的帐号与用户组

    1.在/etc/group和/etc/gshadow中查找mousegroup: grep mousegroup /etc/group /etc/gshadow (grep的使用) 2.其实Linux ...