【问题标题】:MVC: Set value in autocomplete on EditMVC:在编辑时自动完成设置值
【发布时间】:2010-10-26 01:22:51
【问题描述】:

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

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

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

我们所有的自动补全控件都有对应的控制器,都解析Json结果。

【问题讨论】:

  • 预加载是什么意思,但仍表现为自动完成?您是否希望文本框包含控制器发送给视图的值?

标签: model-view-controller autocomplete model edit


【解决方案1】:

让我们试试这个!好的 这样做: 假设您有一个需要过滤的国家/地区列表 默认情况下,自动完成知道如何进行一些默认设置,但假设您真的想要 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

<html><head></head><body>@Html.TextBox("txtCountryName",Model.CountryName)</body></html>

基本上,神奇之处在于对 LookUpCountry 的调用 GetCountriesList(string query, int startindex, int limit) 返回MyCountries.Where(c =&gt; c.CountryName.SubString(startindex, limit).Contains(query)).ToList();

所以您正在制作自己的修剪功能,因为 JQuery 不知道 CountryName 是什么或如何修剪它。如果它是一个 javascript 对象,我不太确定,但可以这样做

var jsonString = @Html.GetListOfCountries() //Or Model.Countries.ToJSONString()  
var json = JSON.stringify(jsonString); //also JSON.Parse(jsonString) if stringify won't work

这会将必要的国家/地区作为 Html Helper Extension 方法返回。也许作为一个 javascript 对象的列表,它会足够聪明地用它的本地语言来处理它。但是第一种方法对我有用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-09-13
    • 2019-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多