在MVC Razor中访问WCF服务

时间:2014-10-06 11:23:34

标签: c# asp.net-mvc wcf asp.net-mvc-4 razor

我是MVC的全新人物。我只想使用带有wcf服务的mvc在我的页面上显示故事标题列表。调试后,我的应用程序抛出异常:

  

找不到引用合同的默认端点元素   ServiceModel客户端配置中的“ServiceReference1.IService1”   部分。这可能是因为找不到配置文件   您的应用程序,或者没有匹配此的端点元素   合同可以在客户要素中找到。

代码如下:

HomeController.cs

using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace MvcMovie.Controllers
{
    public class HomeController : Controller
    {
       // ServiceReference1.Service1Client cs = new ServiceReference1.Service1Client();
       public ActionResult Index()
      {
         //ViewBag.Message = "Modify this template to jump-start your ASP.NET MVC application.";
         ServiceReference1.Service1Client cs = new ServiceReference1.Service1Client();
         List<ServiceReference1.Story> tm  = cs.GetBollywoodStory();

         return View();
      }
    }
}

Index.cshtml

@{
    ViewBag.Title = "Index";
}

<h2>My Movie List</h2>
<p>Hello from our View Template!</p>

 @*<%n ServiceReference1.Service1Client cs = new ServiceReference1.Service1Client();%>
      *@Name
      <%foreach (ServiceReference1.Story dr in tm)
      {%>       
      <%=dr["Name"].ToString() %>
      <% } %>

请帮帮我.....

1 个答案:

答案 0 :(得分:2)

您不应该在View中编写代码逻辑!

在您的控制器中,您应该获得所需的所有数据,并将其放入某个ViewModel类中。 然后从您的模型显示给您的客户。

假设您创建了一些名为MovieViewModel的ViewModel;

public class MovieViewModel {
   public string Name { get;  set; }
   ... //rest of properties
}

然后在控制器中填充viewmodel并将其发送到您的视图:

<强>控制器

public ActionResult Index()
{
  //ViewBag.Message = "Modify this template to jump-start your ASP.NET MVC application.";
  ServiceReference1.Service1Client cs = new ServiceReference1.Service1Client();
  List<ServiceReference1.Story> tm  = cs.GetBollywoodStory();

  //populate viewmodel
  var movies = new  List<MovieViewModel>();

  foreach(var item in tm) {
     movies.Add(new MovieViewModel {
        Name = item.Name;
        ...
     });
  }

  return View(movies);
}

当您将已填充的模型传递到视图后,您可以将其呈现给您的客户端:

查看

@model IEnumerable<MvcMovie.<folder of your viewmodels>.MovieViewModel>

@{
    ViewBag.Title = "Index";
}

<h2>My Movie List</h2>
<p>Hello from our View Template!</p>

@foreach(var movie in Model) {
   @Html.DisplayNameFor(m => m.Name)
   @Html.DisplayFor(m => m.Name)
}

*请注意视图开头的模型参考!

你应该了解Razor,以及MVC助手...... 这可以是起点,但你需要找到一些关于MVC的好教程。

也许这样:http://www.microsoftvirtualacademy.com/training-courses/developing-asp-net-mvc-4-web-applications-jump-start