2011-12-13 50 views
1

我想发送两个参数给AutoComplete方法自动完成使用两个参数

public ActionResult AutoComplete(String term,String term2) 
     { 
      var d = db.Cities 
       .OrderBy(r => r.City1) 
       .Where(r => r.City1.Contains(term)) 
       .Where(r => r.Country.Name.Equals(term2)) 
       .Select(r => new { label = r.City1 }); 
      return Json(d, JsonRequestBehavior.AllowGet); 
     } 

函数的Jquery

$(":input[data-autocomplete]").each(function() { 
     $(this).autocomplete({ source: $(this).attr("data-autocomplete") }); 
    }); 

相同input字段,其​​中的第一个值作为下一个瓦尔德是以前的input字段总是

RazorHTML代码为

<div class="editor-label"> 
      @Html.LabelFor(model => model.Sender.S_Country) 
     </div> 
     <div class="editor-field"> 
      <input data-autocomplete="@Url.Action("AutoCountry", "Coureir")" class="text-box single-line" data-val="true" data-val-regex="Country Names Contains only space and Characters - or ." data-val-regex-pattern="^([a-zA-Z]+[-.\s]?)*$" data-val-required="The Country field is required." id="Sender_S_Country" name="Sender.S_Country" type="text" value="" />    
      @Html.ValidationMessageFor(model => model.Sender.S_Country) 
     </div> 

     <div class="editor-label"> 
      @Html.LabelFor(model => model.Sender.S_City) 
     </div> 
     <div class="editor-field"> 
      <input data-autocomplete="@Url.Action("AutoComplete", "Coureir")" class="text-box single-line" id="Sender_S_City" name="Sender.S_City" type="text" value="" /> 
      @Html.ValidationMessageFor(model => model.Sender.S_City) 
     </div> 
+0

如何传递第二个参数? –

回答

2

如果我明白你的问题的话,我想你需要修改@ Url.Action是:

@Url.Action("AutoComplete", "Coureir", new { term = model.Sender.S_City, term2 = model.Sender.S_Country })); 
+0

它给出错误'对象引用未设置为对象的实例'。 –

+0

你从哪里得到错误?在视图?哪个对象正在投掷? –

+0

@MuhammadNauman,调试它并查看哪个对象为空! – Romias