-1

我对 MVC 3.0 完全陌生,我要求使用 WCF 创建一个 MVC 3.0 应用程序。我已经创建了 WCF 服务并创建了 MVC 应用程序。我对如何将服务链接到 MVC 应用程序视图的过程有点怀疑。我创建了一个名为 TMReportController 的控制器。我有一个视图 BenchEmployee。我需要从视图传递输入,即,我需要将下拉列表的值传递给服务获取它返回的数据集并将其绑定到视图 BenchEmployee 中存在的网格。不要我的观点是一个aspx页面。有人可以向我解释如何做到这一点吗?提前致谢。

4

1 回答 1

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 值也需要来自您的 Web 服务,您可以将 Items 属性设置为带有 setter 的自动属性,并在您的 GET 和 POST 操作中调用 WCF 服务上的相应方法来检索值并绑定它.

于 2012-10-16T08:07:03.103 回答