aspnetcore/test/WebSites/ModelBindingWebSite/Controllers/FromHeader_BlogController.cs

75 lines
2.4 KiB
C#

// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System.Linq;
using Microsoft.AspNet.Mvc;
namespace ModelBindingWebSite.Controllers
{
[Route("Blog")]
public class FromHeader_BlogController : Controller
{
// Echo back the header value
[HttpGet("BindToStringParameter")]
public object BindToStringParameter([FromHeader] string transactionId)
{
return new Result()
{
HeaderValue = transactionId,
ModelStateErrors = ModelState.Where(kvp => kvp.Value.Errors.Count > 0).Select(kvp => kvp.Key).ToArray(),
};
}
// Echo back the header values
[HttpGet("BindToStringArrayParameter")]
public object BindToStringArrayParameter([FromHeader] string[] transactionIds)
{
return new Result()
{
HeaderValues = transactionIds,
ModelStateErrors = ModelState.Where(kvp => kvp.Value.Errors.Count > 0).Select(kvp => kvp.Key).ToArray(),
};
}
[HttpGet("BindToStringParameter/CustomName")]
public object BindToStringParameterWithCustomName([FromHeader(Name = "tId")] string transactionId)
{
return new Result()
{
HeaderValue = transactionId,
ModelStateErrors = ModelState.Where(kvp => kvp.Value.Errors.Count > 0).Select(kvp => kvp.Key).ToArray(),
};
}
[HttpGet("BindToModel")]
public object BindToModel(BlogPost blogPost)
{
return new Result()
{
HeaderValue = blogPost.Title,
HeaderValues = blogPost.Tags,
ModelStateErrors = ModelState.Where(kvp => kvp.Value.Errors.Count > 0).Select(kvp => kvp.Key).ToArray(),
};
}
private class Result
{
public string HeaderValue { get; set; }
public string[] HeaderValues { get; set; }
public string[] ModelStateErrors { get; set; }
}
public class BlogPost
{
[FromHeader]
public string Title { get; set; }
[FromHeader]
public string[] Tags { get; set; }
public string Author { get; set; }
}
}
}