ASP.NET MVC 4 – Model + Axis2 SOAP + Unity.Mvc4 + AutoMapper 方法
( Project : AxisSOAPLibrary ) IUserRepository.cs |
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using AxisSOAPLibrary.Entities; namespace AxisSOAPLibrary { public interface IUserRepository { IEnumerable<Entities.User> GetAll(); … … } } |
( Project : AxisSOAPLibrary ) UserRepository.cs |
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using AxisSOAPLibrary.Entities; using System.ServiceModel; namespace AxisSOAPLibrary { public class UserRepository : IUserRepository { public IEnumerable<Entities.User> GetAll() { List<Entities.User> UserList = new List<Entities.User>(); BasicHttpBinding Binding = new BasicHttpBinding(); EndpointAddress Endpoint = new EndpointAddress("http://192.168.1.81/axis2/services/test?wsdl"); Axis2ServiceReference.testPortTypeClient SoapClient = new Axis2ServiceReference.testPortTypeClient(Binding, Endpoint); SoapClient.Open(); if(SoapClient.State == System.ServiceModel.CommunicationState.Opened) { foreach (Axis2ServiceReference.user item in SoapClient.getUserList()) { Entities.User TempUser = new Entities.User(); TempUser.UserID = item.userID; TempUser.UserName = item.userName; TempUser.UserAge = item.userAge; TempUser.UserPassword = item.userPassword; UserList.Add(TempUser); } } SoapClient.Close(); return UserList; } … … } } |
( Project : AxisSOAPLibrary ) \Entities\User.cs |
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace AxisSOAPLibrary.Entities { public class User { public String UserID { get; set; } public String UserPassword { get; set; } public String UserName { get; set; } public int UserAge { get; set; } } } |
( Project : MvcApplication ) Global.asax.cs |
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Http; using System.Web.Mvc; using System.Web.Optimization; using System.Web.Routing; namespace MvcApplication { public class MvcApplication : System.Web.HttpApplication { protected void Application_Start() { AreaRegistration.RegisterAllAreas(); WebApiConfig.Register(GlobalConfiguration.Configuration); FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); RouteConfig.RegisterRoutes(RouteTable.Routes); BundleConfig.RegisterBundles(BundleTable.Bundles); AuthConfig.RegisterAuth(); Bootstrapper.Initialise(); AutoMapperConfig.Configure(); } } } |
( Project : MvcApplication ) Bootstrapper.cs |
using System.Web.Mvc; using Microsoft.Practices.Unity; using Unity.Mvc4; using AxisSOAPLibrary; namespace MvcApplication { public static class Bootstrapper { public static IUnityContainer Initialise() { var container = BuildUnityContainer(); DependencyResolver.SetResolver(new UnityDependencyResolver(container)); return container; } private static IUnityContainer BuildUnityContainer() { var container = new UnityContainer(); … … container.RegisterType<IUserRepository, UserRepository>(); RegisterTypes(container); return container; } public static void RegisterTypes(IUnityContainer container) { } } } |
( Project : MvcApplication ) AutoMapperConfig.cs |
using System; using System.Collections.Generic; using AutoMapper; using AxisSOAPLibrary; namespace MvcApplication { public class AutoMapperConfig { public static void Configure() { … … Mapper.CreateMap<AxisSOAPLibrary.Entities.User, MvcApplication.Models.User>().ReverseMap(); … … Mapper.AssertConfigurationIsValid(); } } } |
( Project : MvcApplication ) \Models\User.cs |
using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace MvcApplication.Models { public class User { public String UserID { get; set; } public String UserPassword { get; set; } public String UserName { get; set; } public int UserAge { get; set; } } } |
( Project : MvcApplication ) \Controllers\UserController.cs |
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using AutoMapper; using MvcApplication.Models; using AxisSOAPLibrary; namespace MvcApplication.Controllers { public class UserController : Controller { readonly IUserRepository repository; public UserController(IUserRepository repository) { this.repository = repository; } public ActionResult Index() { var data = Mapper.Map(repository.GetAll().ToList(), new List<MvcApplication.Models.User>()); return View(data); } } } |
( Project : MvcApplication ) \Views\User\index.cshtml |
@model List<MvcApplication.Models.User> @if(Model != null){ foreach(MvcApplication.Models.User item in Model) { <div> </div> <div>User ID : @(item.UserID)</div> <div>User Name : @(item.UserName)</div> <div>User Passwd : @(item.UserPassword)</div> <div>User Age : @(item.UserAge)</div> } } |