持久的TextBox之后

时间:2014-08-07 15:13:04

标签: c# asp.net asp.net-mvc-3

这应该很容易,但我无法弄清楚如何做到这一点。我有一个文本框,用户将在其中键入要搜索的名称。然后,用户将必须提供一些附加信息,例如从下拉菜单中选择该人居住的州。选择状态后,我正在执行Ajax帖子以获取该州内的城市列表。问题是,只要加载了城市,我就会丢失在文本框中输入的值。如何使这个文本框保持不变,所以我不会失去价值?

function ValueSelected(state, city, zip) {
        var SelectedState = state;
        var SelectedCity= city;
        var ZipCode= zip;
        if (SelectedState.length > 0) {
            // var url = '@Url.Action("SetState", "FindPerson")';
            $.ajax({
                url: '@Url.Action("SetState", "FindPerson")',
                type: 'POST',
                datatype: 'text',
                data: { "SelectedState": SelectedState, "SelectedCity": SelectedCity, "ZipCode": ZipCode},
                cache: false,
                // contentType: 'application;text;charset=UTF-8',
                success: function (e) {
                    window.location.href = window.location.href;
                },
                error: function (e) {
                    alert('error');
                }
            });
        }
    }

更新2014年7月7日:

我写了一个函数,当用户从下拉列表中选择一些内容时,它会将文本框值添加到cookie中。然后,我检查cookie以查看在加载页面时cookie是否包含某些内容。我将cookie设置为在30分钟后过期。

 function setCookieInfo(name, value) {
        if (name != null && name != "") {
            setCookie(name, value, 24);
        }
    }

1 个答案:

答案 0 :(得分:0)

由于您正在执行所有此客户端,因此我不建议执行window.location.href,因为它不会保留任何客户端设置。相反,你应该处理客户端上的所有内容或在视图中设置表单并调用(注意我在这里使用JQuery)$("#form")。submit()来回发值。在该表单中,您可以使用隐藏字段回发所有选定的值,然后从服务器重新加载它们。

此外,当您执行AJAX请求时,成功会返回任何内容,因此您的操作可以返回:

return PartialView("XYZ");

将返回HTML,您可以将其附加到UI。您还可以返回JSON,并构建包含城市的<select>项。

使用window.location.href = ...并不好,因为这会对服务器产生持续的get请求,而你必须在查询字符串中传递信息。