-2

我试图让剧院和电影出现在我的 txtResults.Text 框中。

这是我现在的代码...

 MovieInformation MI = new MovieInformation();

        int rad = int.Parse(txtRadius.Text);

        txtResults.Text = MI.GetTheatersAndMovies(txtZip.Text, rad);

错误是:错误无法将类型“WebShowTimes.movi​​es.Theater[]”隐式转换为“字符串”

4

4 回答 4

2

编译器说您没有传递服务预期的参数。

我怀疑您的服务会在某个邮政编码附近的区域(半径)内搜索剧院。

你有没有尝试过

 txtResults.Text = MI.GetTheatersAndMovies(txtZip.Text,txtRadius.Text);

编辑:看到新的错误消息,现在很清楚该方法返回一个数组WebShowTimes.movies.Theater[]

当然这不是字符串,不能用作 TextBox.Text 属性的值,因此您需要一个循环来读取每个返回的 Theatre 并获取您需要在字符串中显示的属性

例如:

WebShowTimes.movies.Theater[] theathers = MI.GetTheatersAndMovies(txtZip.Text, rad);
foreach(WebShowTimes.movies.Theater t in theaters)
{
    txtResults.Text += t.Name + ", " + t.Address + "\r\n";
}

假设 txtResult 是一个多行文本框,其高度足以显示服务返回的所有剧院。

于 2012-12-20T20:25:06.623 回答
1

如果您需要更详细的帮助,请发布 MovieInformation 的代码,但编译器只是告诉您您的MovieInformation服务没有调用的方法,该方法GetTheatersAndMovies采用单个字符串参数。

编辑:

根据您在评论中发布的 Web 服务 URL,您应该这样调用 Web 服务:

 MI.GetTheatersAndMovies(txtZip.Text,txtRadius.Text);

您将收到一个如下Theater所示的对象数组:

<Theater>
      <Name>string</Name>
      <Address>string</Address>
      <Movies>
        <Movie xsi:nil="true" />
        <Movie xsi:nil="true" />
      </Movies>
</Theater>

更新 2你应该这样做:

var result = MI.GetTheatersAndMovies(txtZip.Text, rad);
StringBuilder sb  = new StringBuilder();
foreach(var item in result)
{
     sb.Append(string.Format("Theater Name: {0}",item.Name));
     sb.Append(string.Format("Address: {0}",item.Address));
     foreach (var movie in item.Movies)
     {
          sb.Append(string.Format("Movie: {0}",movie.Name));
          sb.Append(string.Format("Rating: {0}",movie.Rating));
     }
}

txtResults.Text = sb.ToString();

您可以在此处查看 Web 服务的 WSDL ,它将准确地告诉您 Web 服务返回的每个对象的外观。

于 2012-12-20T20:25:44.663 回答
0

显然,您正在调用传递 1 个参数的 web 方法,并且没有采用 1 个参数的重载。您可能需要创建一个接受该参数的新方法,然后正确使用它。或者只是删除它正在传递的参数

于 2012-12-20T20:24:58.717 回答
0

返回的结果是一个数组,因此以适当的类型获取它,然后将其循环以逐一获取电影,例如:

MI.Theaters  th=MI.GetTheatersAndMovies(txtZip.Text, rad);
 foreach(Mi.movie in th)
   {
     string moviname=mi.movie.name;
   } 

希望这会给你这个想法。

于 2012-12-22T21:49:44.250 回答