【问题标题】:autocomplete with two arguments带有两个参数的自动完成
【发布时间】:2025-12-30 13:10:09
【问题描述】:

我想向 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>

【问题讨论】:

  • 第二个参数怎么传???

标签: asp.net-mvc json asp.net-mvc-3 c#-4.0 autocomplete


【解决方案1】:

如果我理解您的问题,那么我认为您需要将您的 @Url.Action 修改为:

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

【讨论】:

  • 它给出错误“对象引用未设置为对象的实例。”
  • 你从哪里得到错误?在视图中?哪个物体在扔它?
  • 如果它在视图中...哪个对象为空?您也可以在视图中放置断点并对其进行调试...