MVC 3.0 はまったく初めてで、WCF を使用して MVC 3.0 アプリケーションを作成するように依頼されました。既に WCF サービスを作成し、MVC アプリケーションも作成しました。サービスを MVC アプリケーションのビューにリンクする方法について、ちょっと疑問があります。TMReportController という名前のコントローラーを作成しました。ビュー BenchEmployee があります。ビューから入力を渡す必要があります。つまり、ドロップダウンの値をサービスに渡し、返されたデータセットをフェッチし、ビュー BenchEmployee に存在するグリッドにバインドする必要があります。私のビューは aspx ページではありません。誰かがこれを行う方法を説明してもらえますか? 前もって感謝します。
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 プロパティをセッター付きの自動プロパティにし、GET および POST アクション内で WCF サービスの対応するメソッドを呼び出して値を取得し、バインドすることができます。 .
于 2012-10-16T08:07:03.103 に答える