Asp.net webservice输出排序

时间:2015-12-05 15:44:45

标签: c# asp.net

我创建了一个Web服务,它从数据库中读取数据并将其显示给用户。基本上用户将输入邮政编码,输出将是该邮政编码附近的5家餐馆。但是,我想根据最接近最远的邮政编码对结果进行排序。我应该使用哪些C#代码来实现这一目标? 注意:我使用此代码计算用户邮政编码与给定餐馆之间的距离。

        <% foreach (var item in Model) { %> <tr> <td>

        <% Restaurant.GoogleWebService objservice = new Restaurant.GoogleWebService();%>
        <% string Postcode2 = (item.PostCode.ToString());  %>

        <% string Postcode1 =(String)(Session["Data"]);  %>

        <% string d = (objservice.GetDrivingDistanceInMiles(Postcode1, Postcode2).ToString()); %>
        <%: d %>  <%: "Miles" %>
        <%: Html.DisplayFor(modelItem => item.Location) %>
    </td>
    <td>
        <%: Html.DisplayFor(modelItem => item.PostCode) %>
    </td>

1 个答案:

答案 0 :(得分:1)

您应该将您的逻辑与演示文稿分开。

将此部分放入控制器操作中:

var objservice = new Restaurant.GoogleWebService();
var originPostCode = (String)Session["Data"];
var results = Model.Select(item => 
    new RestaurantResult {
        Location = item.Location,
        PostCode = item.PostCode,
        Distance = objservice.GetDrivingDistanceInMiles(originPostCode,
            item.Postcode.ToString()).ToString()
    }).OrderBy(item => item.Distance);
//Pass results to the View here.

替换&#34;型号&#34;这里有任何对象包含您先前作为视图模型传递给视图的结果集合。

确保在视图中更改模型类型以匹配结果类型,或者使用动态。您还必须创建一个新类(RestaurantResult)来保存结果视图模型。

这在视图中:

<% foreach (var item in Model) { %> 
<tr>
    <td>
        <%: item.Distance %>Miles
        <%: Html.DisplayFor(modelItem => item.Location) %>
    </td>
    <td>
        <%: Html.DisplayFor(modelItem => item.PostCode) %>
    </td>
</tr>
<% } %>