我是jQueryUI + MVC3(Razor)的新手,這可能是一個微不足道的問題,無論如何:我試圖讓自動完成工作,以便一旦從彈出我的表單被提交回其索引操作。jQueryUI自動完成與MVC3:發佈自動完成值
這裏是我的步驟(這個假樣本指的是人的一個指標):
1)我創建了一個PersonFilter包裝,如:
public sealed class PersonFilter
{
public string LastName { get; set; }
public int RoleId { get; set; }
// ... etc.
}
2)我創建了一個PersonList模型舉行人員列表以及一些過濾器。
3)我的索引行動像(它使用MvcContrib數據網格,何處頁和排序)提供數據的視圖:
public ViewResult Index(int? page, GridSortOptions sort, PersonFilter filter)
{
var persons = _repository.GetPersons(filter);
if (sort.Column != null)
persons = persons.OrderBy(sort.Column, sort.Direction);
ViewBag.Sort = sort;
PersonList list = new PersonList
{
persons = persons.AsPagination(page ?? 1, 10),
LastName = filter.LastName,
RoleId = filter.RoleId,
Roles = _repository.GetRoles(),
// ...
};
ViewBag.Filter = filter;
return View(list);
}
我也有一個是FindPerson作用,這得到了姓氏參數,並且是用於在人名過濾器上自動完成。
4)我的觀點相關代碼:
...
@model PersonList
...
@using (Html.BeginForm("Index", "Person", FormMethod.Post, new { id = "TheForm" }))
{
...
<input type="text" id="LastName"/>
@Html.DropDownListFor(m => m.RoleId, new SelectList(Model.Roles, "Id", "Title", 0),
new {onchange = "document.getElementById('TheForm').submit();"})
...
}
<script type="text/javascript" language="javascript">
$(function() {
$("#LastName").autocomplete({
source: function (request, response) {
$.ajax({
url: "/Person/FindPerson", type: "POST", dataType: "json",
data: { LastName: request.term },
success: function (data) {
response($.map(data, function (item) {
return { label: item.LastName, value: item.LastName, id: item.Id };
}));
}
});
},
select: function (event, ui) {
$("#LastName").val(ui.item.value);
//alert($("#LastName").val());
$(this).closest("form").submit();
}
});
});
</script>
現在自動完成正常工作,我可以輸入並得到一個彈出窗口,然後從中選擇一個項目;在這種情況下,我的選擇處理程序被調用,並且表單被髮布到Index操作。無論如何,這個動作並沒有得到它的過濾器姓氏成員填充(它的名字等於自動完成的輸入),同時它經常得到它的RoleId和其他成員按預期填充。
我試着明確地設置了選擇處理程序中顯示的LastName輸入值(即使這應該是多餘的),但沒有任何更改。但是,如果我取消註釋警報行,則可以查看顯示的正確值。如果我闖入Index操作,則不會設置篩選器LastName,如果我在其參數中添加FormCollection對象,則會找到名爲LastName的NO鍵。關鍵只顯示如果我添加一個隱藏字段,如:
@Html.HiddenFor(m => m.LastName)
,但是這僅僅是找出有什麼錯我的自動完成的輸入測試。任何人都可以解釋我在這裏做錯了嗎?
謝謝!我錯誤地認爲身份證足夠了...... – Naftis