2011-06-13 26 views
0

我有一个地理集合,其中包含类的物品: [州名] [城市],[状态] [国家]使用MVC3/Razor处理对象和路线?

的文本框可供用户开始打字,和一个jQuery自动完成框填充显示可能的选项。

的发布请求将依赖的URL结构在其上从集合中选择的上方,即 www.mysite.com/allstates/someterms(如果一个国家被选中) www.mysite.com/city-state/someterms(如果城市,州被选中) www.mysite.com/[state name]/someterms(如果选择一个州)

这些已经在我的路线中定义了。

我最初将在控制器上添加一些逻辑来确定合适的URL结构,但我想只是将其作为地理表中的其他字段添加,因此它将是地理集合的属性。

这里是我的jQuery函数来显示采集的详细信息时,在文本框上的按键触发:

$(function() { 
     $("#txtGeoLocation").autocomplete(txtGeoLocation, { 
      source: function (request, response) { 
       $.ajax({ 
        url: "/home/FindLocations", type: "POST", 
        dataType: "json", 
        selectFirst: true, 
        autoFill: true, 
        mustMatch: true, 
        data: { searchText: request.term, maxResults: 10 }, 
        success: function (data) { 
         response($.map(data, function (item) { 
          return { label: item.GeoDisplay, value: item.GeoDisplay, id: item.GeoID } 
         })) 
        } 
       }) 
      }, 
      select: function (event, ui) { 
       alert(ui.item ? ("You picked '" + ui.item.label + "' with an ID of " + ui.item.id) 
        : "Nothing selected, input was " + this.value); 
       document.getElementById("hidLocation").value = ui.item.id; 
      } 
     }); 
    }); 

我想是基于对象的参数有结构的URL(似乎是最简单) 。我似乎只能读取“选定”的参数,而不能点击按钮。

我该如何做到这一点?

谢谢。

回答

0

要解决此问题,我从Javascript中删除了select:部分,并将所选对象参数添加到发送给我的控制器的MVC路由中。