Asp.net mvc 3 带有wcf的mvc 3.0从视图传递输入,获取结果并绑定到gridview

Asp.net mvc 3 带有wcf的mvc 3.0从视图传递输入,获取结果并绑定到gridview,asp.net-mvc-3,wcf,Asp.net Mvc 3,Wcf,我是MVC3.0的新手 我被要求用WCF创建一个MVC3.0应用程序。我已经创建了一个WCF服务,还创建了MVC应用程序。我对如何将服务链接到MVC应用程序视图的过程有点怀疑。我已经创建了一个名为TMReportController的控制器。我有一个观景台。我需要从视图传递输入,即,我需要将下拉列表的值传递给服务,获取它返回的数据集,并将其绑定到视图BenchEmployee中存在的网格。不要将我的视图设置为aspx页面。 有人能告诉我怎么做吗? 提前感谢。ASP.NET MVC应用程序将成为W

我是MVC3.0的新手 我被要求用WCF创建一个MVC3.0应用程序。我已经创建了一个WCF服务,还创建了MVC应用程序。我对如何将服务链接到MVC应用程序视图的过程有点怀疑。我已经创建了一个名为TMReportController的控制器。我有一个观景台。我需要从视图传递输入,即,我需要将下拉列表的值传递给服务,获取它返回的数据集,并将其绑定到视图BenchEmployee中存在的网格。不要将我的视图设置为aspx页面。 有人能告诉我怎么做吗?
提前感谢。

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; }
}
最后,您可以拥有相应的强类型视图:

@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();
}
@model MyViewModel
@使用(Html.BeginForm())
{
@LabelFor(x=>x.SelectedItemId)
@Html.DropDownListFor(x=>x.SelectedItemId,Model.Items)
好啊
}
@如果(Model.Results!=null)
{
var grid=新的WebGrid(Model.Results);
@GetHtml();
}

当然,如果DropDownList值也需要来自您的web服务,您可以将Items属性设置为带有setter的auto属性,并在GET和POST操作中调用WCF服务上的相应方法来检索值并绑定它。

Hi Darin,感谢您的回复,我使用了ViewBag.EmpBench并将其分配给我的服务代理服务公共类TMReportController:Controller{ServiceRef.TMReportWCFServiceClient obmyserv=new ServiceRef.TMReportWCFServiceClient();public ActionResult EmployeeBench(){ViewBag.EmpBench=obmyserv.GetBenchEmployee(“All”、“All”、“All”、“All”);return View();}}我正在试图访问视图中的ViewBag.EmpBench以绑定到gridview我该怎么做?
@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();
}