比起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. 《转》Linux下的多线程编程

    原地址:http://linux.chinaunix.net/doc/program/2001-08-11/642.shtml 1 引言 线程(thread)技术早在60年代就被提出,但真正应用多线程 ...

  2. 探索Oracle之数据库升级七 11gR2 to 12c 升级完毕后插入PDB

    探索Oracle之数据库升级七 11gR2 to 12c 升级完毕后插入PDB 前言:        从Oracle 12c開始,引入了容器数据库的概念,能够实现数据库插拔操作,例如以下图: 如今我们 ...

  3. HDU 3277Marriage Match III(二分+并查集+拆点+网络流之最大流)

    题目地址:HDU 3277 这题跟这题的上一版建图方法差点儿相同,仅仅只是须要拆点.这个点拆的也非常巧妙,既限制了流量,还仅仅限制了一部分,曾经一直以为拆点会所有限制,原来也能够用来分开限制,学习了. ...

  4. Java引用类型具体解释

    JVM  的垃圾回收器对于不同类型的引用有不同的处理方式.java中对于一个对象来说,仅仅要有引用的存在,它就会一直存在于内存中.假设这种对象越来越多,超出了JVM中的内存总数,JVM就会抛出OutO ...

  5. Java程序猿面试题集(181- 199)

    Java面试题集(181-199) 摘要:这部分是包括了Java高级玩法的一些专题,对面试者和新入职的Java程序猿相信都会有帮助的. 181.  182. 183. 184. 185. 186. 1 ...

  6. String数组必须初始化之后才能赋值

    犯了一个很大的错误: String sample[]=null; sample[]="hello"; samlple[]="world"; 直接就报异常了. 记 ...

  7. Android利用Get、Post 获取网络数据

    首先是Get: 布局非常easy.就一个button,主要看一下MainActivity吧: package com.francis.httpget; import android.app.Activ ...

  8. ORA-00600: 内部错误代码, 参数: [kqlnrc_1]

    如以下的错误: Mon Mar 31 18:45:59 2014 Errors in file /oracle/app/oracle/diag/rdbms/zscims/zscims2/trace/z ...

  9. C#区域截图——调用API截图

    原文:C#区域截图——调用API截图 前言:截图对于一个C++开发者来说无非是小菜一碟,也有朋友使用C#的 Graphics.CopyFromScreen 方法屏幕操作,作为一名整天想着用 C++ 开 ...

  10. VMware虚拟机上网络连接(network type)的三种模式--bridged、host-only、NAT

    VMware虚拟机上网络连接(network type)的三种模式--bridged.host-only.NAT VMWare提供了三种工作模式,它们是bridged(桥接模式).NAT(网络地址转换 ...