2012-10-16 31 views
0

是完全新的MVC 3.0 被要求用WCF創建一個MVC 3.0應用程序。我已經創建了一個WCF服務,並且還創建了MVC應用程序。我有點懷疑如何將服務鏈接到MVC應用程序的視圖。我創建了一個名爲TMReportController的控制器。我有一個觀點BenchEmployee。我需要從視圖傳遞輸入即,我需要將下拉列表的值傳遞給服務,以獲取它返回的數據集並將其綁定到視圖BenchEmployee中存在的網格。我的視圖不是一個aspx頁面。 有人可以向我解釋這可以做到嗎? 在此先感謝。mvc 3.0與wcf通過輸入查看和提取結果並綁定到gridview

回答

0

ASP.NET MVC應用程序將是WCF服務的客戶端。所以第一步是導入服務定義。這將在客戶端上創建代理對象。因此,在您的MVC應用程序中,您將獲得在服務上定義的操作和數據合約。

現在,所有剩下的你是寫一個反映你的觀點要求的視圖模型:

public class MyViewModel 
{ 
    [Displayname("Select an item")] 
    public string SelectedItemId { get; set; } 
    public IEnumerable<SelectListItem> Items 
    { 
     get 
     { 
      new SelectListItem { Value = "1", Text = "item 1" }, 
      new SelectListItem { Value = "2", Text = "item 2" }, 
      new SelectListItem { Value = "3", Text = "item 3" }, 
     } 
    } 

    public IEnumerable<SomeType> Results { get; set; } 
} 

然後:

public class HomeController: Controller 
{ 
    public ActionResult Index() 
    { 
     var model = new MyViewModel(); 
     return View(model); 
    } 

    [HttpPost] 
    public ActionResult Index(MyViewModel model) 
    { 
     using (var client = new YourWebServiceClient()) 
     { 
      model.Results = client.GetResults(model.SelectedItemId); 
      return View(model); 
     } 
    } 
} 

,最後你可以有強烈的相應鍵入視圖:

@model MyViewModel 
@using (Html.BeginForm()) 
{ 
    @Html.LabelFor(x => x.SelectedItemId) 
    @Html.DropDownListFor(x => x.SelectedItemId, Model.Items) 
    <button type="submit">OK</button> 
} 

@if (Model.Results != null) 
{ 
    var grid = new WebGrid(Model.Results); 
    @grid.GetHtml(); 
} 

當然,如果DropDownList值需要來自你的w eb服務,您可以通過一個setter在Items屬性中使用一個auto屬性,在GET和POST動作中調用WCF服務的相應方法來檢索值並綁定它。

+0

達林嗨,爲響應我提出了利用ViewBag.EmpBench的,它分配給我的服務代理服務 公共類TMReportController感謝:控制器 { ServiceRef.TMReportWCFServiceClient obmyserv =新ServiceRef.TMReportWCFServiceClient(); public ActionResult EmployeeBench() ViewBag.EmpBench = obmyserv.GetBenchEmployee(「All」,「All」,「All」,「All」); return View(); } } 我試圖訪問視圖中的ViewBag.EmpBench綁定到GridView我該怎麼做? –