自动完成有两个参数

时间:2011-12-13 18:19:55

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

我想向 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字段的第一个值,其中下一个valud是前一个input字段

Razor HTML 代码为

<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>

1 个答案:

答案 0 :(得分:2)

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

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