2015-05-28 60 views
1

我是新來的MVC5,我正在努力'搜索'功能。我的目標是從數據服務中獲取數據(也就是說,我將數據輸入到表單中並按下搜索按鈕,如果這些數據是顯示數據的記錄)。如何使用依賴關係來模擬數據。 MVC5

我創建了一個依賴模擬數據(虛擬數據)。如何將我的代碼連接到控制器以實現我的目的?請指教謝謝。

我的繼承人控制器和模擬我:

public class SearchController : Controller 
{ 
    private readonly ISearchResultsService _resultsService; 

    public SearchController() : this(DependencyFactory.NewResultsService()) 
    {   

    } 

    public SearchController(ISearchResultsService resultsService) 
    { 
     _resultsService = resultsService; 
    } 

    // GET:Search 
    public ActionResult Index() 
    { 
     return View(); 
    } 

    // GET: Search/Details/5 
    public ActionResult Details(int id) 
    { 
     return View(); 
    } 

    // GET: Search/Create 
    public ActionResult Create() 
    { 
     return View(); 
    } 

    // POST: Search/Create 
    [HttpPost] 
    public ActionResult Create(FormCollection collection) 
    { 
     try 
     { 
      // TODO: Add insert logic here 

      return(); 
     } 
     catch 
     { 
      return View(); 
     } 
    } 

    //[HttpPost] 
    //public ActionResult Index(SearchCriteria data) 
    //{ 
    // var data = this._resultsService.FindClaims(data); 
    // return View(data); 
    //} 

    [HttpPost] 
    public ActionResult Index() 
    { 

     return View(); 


    } 

    // GET: Search/Edit/5 
    public ActionResult Edit(int id) 
    { 
     return View(); 
    } 

    // POST: Search/Edit/5 
    [HttpPost] 
    public ActionResult Edit(int id, FormCollection collection) 
    { 
     try 
     { 
      // TODO: Add update logic here 

      return RedirectToAction("Index"); 
     } 
     catch 
     { 
      return View(); 
     } 
    } 

    // GET: Search/Delete/5 
    public ActionResult Delete(int id) 
    { 
     return View(); 
    } 

    // POST: Search/Delete/5 
    [HttpPost] 
    public ActionResult Delete(int id, FormCollection collection) 
    { 
     try 
     { 
      // TODO: Add delete logic here 

      return RedirectToAction("Index"); 
     } 
     catch 
     { 
      return View(); 
     } 
    } 
} 

public static class DependencyFactory 
{ 
    public static ISearchResultsService NewResultsService() 
    { 
     return new MockSearchResultsService(); 
    } 
} 

public interface ISearchResultsService 
{ 
    List<Person> FindClaims(string firstName, string lastName); 
} 

public class MockSearchResultsService : ISearchResultsService 
{ 
    public List<Person> FindClaims(string firstName, string lastName) 
    { 
     return new List<Person>(new []{new Person{FirstName = "John", LastName = "Doe"}});//throw new NotImplementedException(); 
    } 
} 

public class Person 
{ 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 
} 

}

回答

0

我建議你使用一些IoC容器http://autofac.org。你可以配置你的容器和註冊服務像這樣:

builder.RegisterType<MockSearchResultsService>().As<ISearchResultsService>() 

你所有的依賴將自動解決:

public class SearchController : Controller 
{ 
    private readonly ISearchResultsService _resultsService; 

    public SearchController(ISearchResultsService resultsService) 
    {   
     _resultsService = resultsService; 
    } 
} 

請注意,有您可以使用許多IoC容器。嘗試搜索更多關於AutoFacNinjectCastle Windsor