[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(day<DateTime.Today){<span>History</span>}@String.Format("{0:d}",day)}
控制器:使用OutputCacheAttribute来定义结果的缓存,使用基类FilterAttribute时只允许在调用动作方法前过滤它们。
public static class MyHtmlHelper
{
/// <summary>
/// 自定义一个@html.Image()
/// </summary>
/// <param name="helper"></param>
/// <param name="src">src属性</param>
/// <param name="alt">alt属性</param>
/// <returns></returns>
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<T>();
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特性赋予控制。
跨域请求