1

我在 MVC 4 中使用带有 Razor HTML 的 jquery ui 自动完成功能。我可以将它与硬编码值一起使用,但我想知道如何将它连接到数据库,以便不必对即将出现的值进行硬编码。

4

2 回答 2

2

如果您使用的是 MVC4,那么您应该创建一个可以从视图访问的操作(呈现操作 url)。然后,您需要在设置自动完成 jquery 时将此 (url) 设置为源。

远程源的文档在这里

对于 MVC,它看起来像这样:

$( "#birds" ).autocomplete({
      source: "/MyController/OptionsAction",
      minLength: 2,
      select: function( event, ui ) {
        log( ui.item ?
          "Selected: " + ui.item.value + " aka " + ui.item.id :
          "Nothing selected, input was " + this.value );
      }
    });
于 2013-03-24T23:03:14.963 回答
0

最好使用 MVC 的 @URL.Action 来确保正确编码 URL,即使您的视图是一到十个文件夹深。

在上面的示例中,“/MyController/OptionsAction”如果您将视图向下移动一个文件夹,@URL.Action 将继续工作,则该文件夹将不起作用。

注意ajax调用的格式是这样的:

  1. 发送数据:

url(您发布到的位置)

数据(您发布的数据)

类型(发出的请求类型:POST 或 GET 或 PUT。如果留空,则默认为 GET)

contentType(向服务器发送数据时使用的内容类型。除非必要,否则最好不要更改)

  1. 接收数据:

dateType(您期望返回的数据类型:在本例中为 json)

成功(请求成功时调用的函数)

        $('#Country').autocomplete({
        source: function (request, response) {
            $.ajax({
                url: '@Url.Action("GetCountries", "User")',
                data: "{ 'CountrySearch': '" + $('#Country').val() + "' }",
                dataType: "json",
                type: "POST",
                contentType: 'application/json',
                success: function (data) {
                    response($.map(data, function (item) {
                        return JSON.parse(item);
                    }))
                },
                error: function (jqXhr, textStatus, errorThrown) { alert("Error '" + jqXhr.status + "' (textStatus: '" + textStatus + "', errorThrown: '" + errorThrown + "')"); },
            })
        },
        minLength: 1,
    });

国家从这样的数据库调用中返回数据的地方:

{ "国家":"["澳大利亚", "奥地利", "加拿大", "美国"]" }

    public JsonResult GetCountries(string CountrySearch)
    {
        string[] Countries = new AddressManager().GetCountries(CountrySearch);
        string serialisedList = new JavaScriptSerializer().Serialize(Countries);
        return new JsonResult { Data = new { Countries = serialisedList }, ContentEncoding = Encoding.UTF8, ContentType = "text/plain", JsonRequestBehavior = JsonRequestBehavior.AllowGet };
    }
于 2014-12-26T12:27:12.830 回答