1. Razor Helpers 的运用:
例如,定义好 ViewBag.Message = "Welcome to ASP.NET MVC!";我要在界面上显示
"Welcome ..."; 那我们一般有2种操作,3种实现操作:

2种操作:

Extension Method off HtmlHelpers 和 Razor Declarative @Helper Sytnax

3种实现方式:
一、 Extension  Method
在当前项目下建立一个文件夹,命名为Helpers,在这个文件夹下添加 HtmlHelpers类,具体实现如下


namespace MVCET.Helpers
{
    public static class HtmlHelpers
    {
        public static string Truncat(this HtmlHelper helper, string input, int length)
        {
            if (input.Length <= length)
            {
                return input;
            }
            else
            {
                return input.Substring(0, length) + "...";
            }
        }
    }
}
 

这时候,在页面上只要添加这样的代码就可以显示了:
@using MVCET.Helpers
<h2>@Html.Truncat(@ViewBag.Message as string,8)</h2>

二、 Razor Declarative @Helper Sytnax
1. 在当前页面添加如下代码:
@helper Truncat(string input, int length)
{
    if(input.Length<=length)
    {
        @input
    }
    else
    {
        @input.Substring(0,length)<text>...(Razor)</text>
    }
}
再添加这行代码:
<h2>@Truncat(@ViewBag.Message as string, 8)</h2>

显示的结果和上面的事一模一样的。

2. 添加App_Code 文件夹,然后添加RazorHelper.cshtml  Razor 文件。声明如下:

 
@helper Truncat(string input, int length)
{
    if(input.Length<=length)
    {
        @input
    }
    else
    {
        @input.Substring(0,length)<text>...(Razor)</text>
    }
}
 

在页面上添加以下代码:
<h2>@RazorHelper.Truncat(@ViewBag.Message,8)</h2>
运行,我们看到结果是一样的。

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

2.运用Linq进行带参查询
如果说,在Index 页面中添加了参数,那么我们就可以有很多种方式给其传参,让其响应事件。 例如,在下面的例子中,可以有一个快捷方式去查看Shanghai 的Restaurant.

第一种:通过@Html.ActionLink()

在RestaurantControl 中添加以下代码

 
OdeToFoodDB _db = new OdeToFoodDB();
public ActionResult Index(string city)
 {
            var model = from r in _db.Restaurants
            where r.Adress.City == city ||(city==null)
            orderby r.Name
            select r;
            return View(model);
}
 

在Restaurant的View 中,Index页面写入一下代码:
<p>@Html.ActionLink("To see Restaurant in shanghai","Index","Restaurant",new {city="Shanghai"},null)</p>

第二种:绑定字段

添加DownloadList列表,让其通过选项进行自由选择。DownloadList可以绑定字段。
在RestaurantControl 中添加以下代码:

 
OdeToFoodDB _db = new OdeToFoodDB();
        public ActionResult Index(string city)
        {
            ViewBag.City = _db.Restaurants.Select(r => r.Adress.City).Distinct();
            var model = from r in _db.Restaurants
                        where r.Adress.City == city ||(city==null)
                        orderby r.Name
                        select r;
            //var model = _db.Restaurants
            //    .Where(r => r.Adress.City == "Guangdong")
            //    .OrderBy(r => r.Name);
            return View(model);
        }
 

在Restaurant的View 中,Index页面写入一下代码:
@using (Html.BeginForm("Index","Restaurant",FormMethod.Get))
{
@Html.DropDownList("City",new SelectList(ViewBag.City))
    <input type="submit" value="Filter" />
}

在这里,我让DropDownList 绑定了一个dynamic 类型(ViewBag.City)的数据。

ASP.NET MVC中几个运用技巧的更多相关文章

  1. 《Entity Framework 6 Recipes》中文翻译系列 (20) -----第四章 ASP.NET MVC中使用实体框架之在MVC中构建一个CRUD示例

    翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 第四章  ASP.NET MVC中使用实体框架 ASP.NET是一个免费的Web框架 ...

  2. 在ASP.NET MVC中使用IIS级别的URL Rewrite

    原文 在ASP.NET MVC中使用IIS级别的URL Rewrite 大约一年半前,我在博客上写过一系列关于URL Rewrite的文章(2.3.4),把ASP.NET平台上进行URL Rewrit ...

  3. 2.ASP.NET MVC 中使用Crystal Report水晶报表

    上一篇,介绍了怎么导出Excel文件,这篇文章介绍在ASP.NET MVC中使用水晶报表. 项目源码下载:https://github.com/caofangsheng93/CrystalReport ...

  4. 关于 ASP.NET MVC 中的视图生成

    在 ASP.NET MVC 中,我们将前端的呈现划分为三个独立的部分来实现,Controller 用来控制用户的操作,View 用来控制呈现的内容,Model 用来表示处理的数据. 从控制器到视图 通 ...

  5. 在Asp.Net MVC 中配置 Serilog

    Serilog 是一种非常简便记录log 的处理方式,使用Serilog可以生成本地的text文件, 也可以通过 Seq 来在Web界面中查看具体的log内容. 接下来就简单的介绍一下在Asp.Net ...

  6. 如何在 ASP.NET MVC 中集成 AngularJS(3)

    今天来为大家介绍如何在 ASP.NET MVC 中集成 AngularJS 的最后一部分内容. 调试路由表 - HTML 缓存清除 就在我以为示例应用程序完成之后,我意识到,我必须提供两个版本的路由表 ...

  7. 如何在 ASP.NET MVC 中集成 AngularJS(2)

    在如何在 ASP.NET MVC 中集成 AngularJS(1)中,我们介绍了 ASP.NET MVC 捆绑和压缩.应用程序版本自动刷新和工程构建等内容. 下面介绍如何在 ASP.NET MVC 中 ...

  8. asp.net mvc 中 一种简单的 URL 重写

    asp.net mvc 中 一种简单的 URL 重写 Intro 在项目中想增加一个公告的功能,但是又不想直接用默认带的那种路由,感觉好low逼,想弄成那种伪静态化的路由 (别问我为什么不直接静态化, ...

  9. 在 ASP.NET MVC 中充分利用 WebGrid (microsoft 官方示例)

    在 ASP.NET MVC 中充分利用 WebGrid https://msdn.microsoft.com/zh-cn/magazine/hh288075.aspx Stuart Leeks 下载代 ...

随机推荐

  1. javascript中split字符串分割函数

    1. var ss=s.split("fs"); for(var i=0;i<ss.length;i++){ 处理每一个ss[i]; } 2. "2:3:4:5&q ...

  2. mongodb 3.2存储目录结构说明

    [root@hadoop1 mongodb]# tree ./data ./data |-- WiredTiger | |-- WiredTiger.lock | |-- WiredTiger.tur ...

  3. 十天学会单片机Day3 D/A与A/D转换器

    D/A转换器 1.二进制权电阻网络型D/A转换器 基准电压Vref 数据D(d3d2d1d0) 输出模拟电压V0 i0 = Vref/8R    i1 = Vref/4R     i2 = Vref/ ...

  4. 菜鸟学习Hibernate——一对多关系映射

    Hibernate中的关系映射,最常见的关系映射之一就是一对多关系映射例如学生与班级的关系,一个班级对应多个学生.如图: Hibernate中如何来映射这两个的关系呢? 下面就为大家讲解一下: 1.创 ...

  5. .NET开源工作流RoadFlow-快速入门

    在环境搭建好之后,我们就来学习一下怎样快速创建一个流程,并执行和流转该流程(我们这里讲的只是入门,不涉及到具体流程参数设置). 创建一个流程步骤为:在数据库在创建表-->设计表单-->设置 ...

  6. Linux I/O总结

    文件流 标准I/O文件流可用于单字节或多字节字符集.流的定向决定了所读写的是单字节还是多字节.流在最初创建时,并没有定向,此时如果在为定向的流上使用多字节I/O函数,那么该流被设置为宽定向的:如果在为 ...

  7. Entity Framework 学习第一天 续

    改写第一天的增删改查方法,观察增删改查的本质 using System; using System.Collections.Generic; using System.Data.Entity.Infr ...

  8. activemq整合spring

  9. 微软职位内部推荐-Senior Software Engineer

    微软近期Open的职位: Are you looking for a big challenge? Do you know why Big Data is the next frontier for ...

  10. Eclipse中的常用快捷键

    快捷修复 Command+1 //int a=100L; //int a=(int) 100L; 快捷删除行 Command+D 快速起新行 Shift+Enter (当本行代码很长时,将光标定在本行 ...