使用MVC3 / Razor处理对象和路由?

时间:2011-06-13 21:41:11

标签: asp.net-mvc-3 c#-4.0 razor asp.net-mvc-3-areas

我有一个包含以下项目的地理集合: [州名] [市,州] [国家]

文本框可供用户开始输入,jQuery自动填充框填充显示可能的选项。

发布请求的URL结构将取决于从上面的集合中选择哪个,即 www.mysite.com/allstates/someterms(如果选择了国家/地区) www.mysite.com/city-state/someterms(如果选择了一个城市,州) www.mysite.com/ [state name] / someterms(如果选择了状态)

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

我最初会在控制器上添加一些逻辑以确定适当的URL结构,但我想只是将其添加为geo表中的附加字段,因此它将是地理集合的属性。 / p>

这是我的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(似乎最简单)。我似乎只能读取“选中”的参数,而不是点击按钮。

我该如何做到这一点?

感谢。

1 个答案:

答案 0 :(得分:0)

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