Model view controller MVC:编辑时在自动完成中设置值

Model view controller MVC:编辑时在自动完成中设置值,model-view-controller,autocomplete,model,edit,Model View Controller,Autocomplete,Model,Edit,在我们的MVC应用程序中,我们在几个页面上使用jQuery自动完成控件。这在Create上运行良好,但在Edit上无法运行 实际上,我不知道如何使autocomplete控件从模型中预加载数据,并且在用户想要更改值的情况下仍然表现为autocomplete 另外,如何确保该值以Create调用中使用的相同格式显示 我们所有的自动完成控件都有相应的控制器和所有解析Json结果。让我们试试这个!好的,这样做: 假设您有一个需要筛选的国家列表 Auto Complete知道如何在默认情况下调用一些默认

在我们的MVC应用程序中,我们在几个页面上使用jQuery自动完成控件。这在
Create
上运行良好,但在
Edit
上无法运行

实际上,我不知道如何使autocomplete控件从模型中预加载数据,并且在用户想要更改值的情况下仍然表现为autocomplete

另外,如何确保该值以
Create
调用中使用的相同格式显示


我们所有的自动完成控件都有相应的控制器和所有解析Json结果。

让我们试试这个!好的,这样做: 假设您有一个需要筛选的国家列表 Auto Complete知道如何在默认情况下调用一些默认内容,但假设您确实想要CountryName,并且您知道每个按键都会对您指定的URL进行ajax调用。 创建一个动作方法,如下所示:

  public ActionResult LookupCountry(string q, int limit)
  {
      var list = GetListOfCountries(q, 0, limit);
      var data = from s in list select new {s.CountryName};
      return Json(data);
  }
以下是Jquery:

$(document).ready( function() {
  $('#txtCountryName').autocomplete('<%=Url.Action("LookupCountry", "MyController") %>', {
      dataType: 'json',
      parse: function(data) {
          var rows = new Array();
          for(var i=0; i<data.length; i++){
              rows[i] = { data:data[i], value:data[i].CountryName,          result:data[i].CountryName};
          }
          return rows;
      },
      formatItem: function(row, i, n) {
          return row.CountryName;
      },
      width: 300,
      mustMatch: true,
  });
});

它将作为Html助手扩展方法返回必要的国家/地区。作为一个javascript对象列表,它可能足够聪明,可以用它的本地语言以这种方式处理它。不过,第一种方法对我很有效。

让我们试试这个!好的,这样做: 假设您有一个需要筛选的国家列表 Auto Complete知道如何在默认情况下调用一些默认内容,但假设您确实想要CountryName,并且您知道每个按键都会对您指定的URL进行ajax调用。 创建一个动作方法,如下所示:

  public ActionResult LookupCountry(string q, int limit)
  {
      var list = GetListOfCountries(q, 0, limit);
      var data = from s in list select new {s.CountryName};
      return Json(data);
  }
以下是Jquery:

$(document).ready( function() {
  $('#txtCountryName').autocomplete('<%=Url.Action("LookupCountry", "MyController") %>', {
      dataType: 'json',
      parse: function(data) {
          var rows = new Array();
          for(var i=0; i<data.length; i++){
              rows[i] = { data:data[i], value:data[i].CountryName,          result:data[i].CountryName};
          }
          return rows;
      },
      formatItem: function(row, i, n) {
          return row.CountryName;
      },
      width: 300,
      mustMatch: true,
  });
});

它将作为Html助手扩展方法返回必要的国家/地区。作为一个javascript对象列表,它可能足够聪明,可以用它的本地语言以这种方式处理它。但是,第一种方法对我有效。

您所说的“预加载”和“自动完成”是什么意思?是否希望文本框包含由控制器发送到视图的值?什么是预加载,并且仍然作为自动完成?是否希望文本框包含控制器发送到视图的值?