C#学习之路-MVC(二)和WebAPI

注释和验证:在Model中使用System.ComponentModel.DataAnnotations中包含的特性,为客户端数据制定一些信息,或用来验证数据。
[Required,StringLength(50)] [DisplayName("Price"),DisplayFormat(DataFormatString"{0:C}")] [DataType(DataType.Date)] 等。
使用ModelState.IsValid来验证模型的状态。
Html Helper :@using(Html.BeginForm){@Html.DisplayName("Check this")//返回参数文本;@Html.CheckBox("check1")//生成复选框}
@Html.Display("Name")返回参数 特性:@Html.TextBox("IdName","Value",new {required="required",@class="class1"})
强化类型的HtmlHelper @Html.DisplayNameFor(m=>m.Text);等。
编辑器扩展:Html.EditorFor(m=>m)和Html.EditorForModel();
自定义:@helper DisplayDay(DateTime day){if(dayHistory}@String.Format("{0:d}",day)}
控制器:使用OutputCacheAttribute来定义结果的缓存,使用基类FilterAttribute时只允许在调用动作方法前过滤它们。


public static class MyHtmlHelper
    {
        ///
        /// 自定义一个@html.Image()
        ///

        ///
        /// src属性
        /// alt属性
        ///
        public static MvcHtmlString Image(this HtmlHelper helper, string src, string alt)
        {
            var builder = new TagBuilder("img");
            builder.MergeAttribute("src", src);
            builder.MergeAttribute("alt", alt);
            builder.ToString(TagRenderMode.SelfClosing);
            return MvcHtmlString.Create(builder.ToString());
        }

    }

REST服务和SOAP服务都利用可客户端-服务器技术,SOAP服务可以使有状态的,也可以是无状态的;REST服务是无状态的。SOAP定义了他自己的消息格式,改格式有标题和正文,可以选择服务方法。
声明控制器返回IHttpActionRequest可以实现返回这个接口的任意对象。-低版本的vs需要在Nuget包里面加载Install-Package Microsoft.AspNet.WebApi
 public IHttpActionResult Get()
        {
            return Ok();
        }
使用HtttpClient发送请求
var client = new HttpClient();
            client.BaseAddress = new Uri("接口地址-http://localhost:8081");
            string response = await client.GetStringAsync("接口方法地址-api/MyApi");
或者 var response = client.GetAsync("");
var myclass=await response.Content.ReadAsAsync();
WebAPI路由的自定义在App_Start/WebApiConfig.cs中
给操作添加HTTP方法:1、在方法的上面添加[HttpGet]等特性,表示它映射到Http Get请求。
2、使用AcceptVerb特性 这个特性允许将多个http方法付给一个动作方法,假定有一个与动作方法不同的Url链接,就可以使用ActionName特性。
 [AcceptVerbs(HttpVerbs.Get | HttpVerbs.Post)]        [ActionName("GetPutAction")]
3、基于约定的路由的优点,他在一个地方定义(调用MapHttpRoute方法),不需要用控制器制定任何映射在方法名前添加特性 [Route("book/{bookId}")]意味请求地址必须是/book/2;。
基于特性的路由需要用注册路由调用MapHttpAttributeRoutes方法(在App_Start/WebApiConfig.cs中)。
控制器的所有动作方法常常使用相同的路由前缀。这种前缀可以使用RoutePrefix特性赋予控制。

跨域请求

在 web.config==>System.webService中添加
"Access-Control-Allow-Origin" value= "*" /> "Access-Control-Allow-Headers" value= "*" /> "Access-Control-Allow-Methods" value= "GET, POST, PUT, DELETE" />

你可能感兴趣的:(C#学习笔记)