【发布时间】:2015-12-26 15:54:06
【问题描述】:
我在 Visual Studio 2013 的 ASP.NET 中有一个 MVC 项目,并且我有一个 asmx 文件,其中包含一个函数,该函数包含调用谷歌距离矩阵
在索引页面我需要调用asmx文件,
asmx 文件包含以下函数:
public double GetDrivingDistanceInMiles(string origin, string destination)
{
string url = @"http://maps.googleapis.com/maps/api/distancematrix/xml?origins=" +
origin + "&destinations=" + destination +
"&mode=driving&sensor=false&language=en-EN&units=imperial";
//create object of HttpWebRequest that create requested object for the given url
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
WebResponse response = request.GetResponse();
Stream dataStream = response.GetResponseStream();
StreamReader sreader = new StreamReader(dataStream);
string responsereader = sreader.ReadToEnd();
response.Close();
XmlDocument xmldoc = new XmlDocument();
xmldoc.LoadXml(responsereader);
if (xmldoc.GetElementsByTagName("status")[0].ChildNodes[0].InnerText == "OK")
{
XmlNodeList distance = xmldoc.GetElementsByTagName("distance");
return Convert.ToDouble(distance[0].ChildNodes[1].InnerText.Replace(" mi", ""));
}
return 0;
}
你能告诉我如何在 MVC 解决方案中添加 asmx 文件并调用它
或者如何在索引文件中添加这个函数我不能在控制器中添加它,因为我需要像这样在循环中调用它
<% foreach (var item in Model) { %>
我试图将代码放在模型中的类中,如下所示:
在索引页面中我这样称呼它:
<% foreach (var item in Model) { %>
<%: Html.DisplayFor(item.DrivingDistanceInMiles) %>
【问题讨论】:
-
不要“添加 asmx 并调用它”。您拥有代码本身,只需将代码添加到您的项目中。作为适用模型上的方法或作为某处的辅助函数(如果适用,可能是
static)。这个特殊的功能看起来更像是一个服务而不是一个模型。 -
你能告诉我如何把它放在一个方法中并在循环中调用它吗?因为我试过了,但我不能提前感谢
标签: c# asp.net asp.net-mvc web-services asp.net-mvc-4