ASP.NET    Webform    WebApi      Ajax 
▌Introduction
This
example will shows how to use Web API in a ASP.NET Webform project template.
▌Environment
▋Visual Studio 2017
community
▌Implement
Assume
that we have an exist ASP.NET Webform project, if not, create a new one.
OR
▋Install Web API
Install Web API into
the Webform project.
▋Set routing rule
Open \App_Start\WebApiConfig.cs and update
the routing pattern like this
public static class WebApiConfig 
    { 
        public static void
  Register(HttpConfiguration config) 
        { 
            // Web API configuration and services 
            // Web API routes 
           
  config.MapHttpAttributeRoutes(); 
           
  config.Routes.MapHttpRoute( 
               
  name: "DefaultApi", 
               
  routeTemplate: "api/{controller}/{action}/{id}", 
               
  defaults: new { id = RouteParameter.Optional } 
            ); 
        } 
    } 
 | 
 
▋Create API Controller
Now we can create a controller which inherits
ApiController.
On the \Controller, right click to Add a new Controller. 
For example, I
create an action like following,
public class ReportController : ApiController 
{ 
        [HttpGet] 
        [Route("api/Report/Reports")] 
        public
  IEnumerable<Report> GetReports() 
        { 
            string jsonStr = @" 
[ 
    { 'id' : '1', 'title': '會計報表01'}, 
                 { 'id' : '2', 'title': '會計報表02'}, 
                 { 'id' : '3', 'title': '財務報表01'}, 
                 { 'id' : '4', 'title': '財務報表02'}, 
                 { 'id' : '5', 'title': '財務報表03'} 
              ]"; 
            var jsonInstance =
  JsonConvert.DeserializeObject<List<Report>>(jsonStr); 
            return jsonInstance.AsEnumerable(); 
        } 
} 
 | 
 
Test
in Postman like a charm.
▋Ajax in .aspx
Here
is an Ajax sample with Vue.js.
▋Html (*.aspx)
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.3/vue.min.js"></script> 
    <script src="https://unpkg.com/axios/dist/axios.min.js"></script> 
    <div id="app"> 
         <select v-model="selectedReport" class="form-control"> 
            <option v-for="rt in reports" :value="rt">{{ rt.title }}</option> 
        </select> 
        <div v-if="selectedReport!==null" class="alert alert-warning" role="alert"> 
            You
  select {{ selectedReport.title }} 
        </div> 
    </div> 
 | 
 
▋JS
var app = new Vue({ 
    el: '#app', 
    data: { 
        reports:
  [], 
       
  selectedReport: null 
    }, 
    methods: { 
       
  renderReports: function () { 
            var vm = this; 
           
  axios.get('api/Report/Reports') 
               
  .then(function (response) { 
                   
  vm.reports = response.data; 
               
  }, function (error) { 
                }); 
        } 
    }, 
    mounted: function () { 
        this.renderReports(); 
    } 
}) 
 | 
 
▋Demo
▌Reference







沒有留言:
張貼留言