<div class="editor-label"> @Html.LabelFor(model => model.CategoryId, "Category") </div> <div class="editor-field"> <table> <tr> <td>@Html.AjaxComboBoxFor(model => model.CategoryId, "/Category/Lookup", "/Category/Caption")</td> <td>@Html.ValidationMessageFor(model => model.CategoryId)</td> </tr> </table> </div>
Controller's code:
[HttpPost]
public JsonResult Lookup(string q_word, string primary_key, int per_page, int page_num)
{
using (var svc = SessionFactoryBuilder.GetSessionFactory().OpenSession())
{
var FilteredCategory = svc.Query<Category>()
.Where(x => q_word == "" || x.CategoryName.Contains(q_word));
var PagedFilter = FilteredCategory.OrderBy(x => x.CategoryName)
.LimitAndOffset(per_page, page_num)
.ToList();
return Json(
new
{
cnt = FilteredCategory.Count()
,primary_key = PagedFilter.Select(x => x.CategoryId)
,candidate = PagedFilter.Select(x => x.CategoryName)
,cnt_page = PagedFilter.Count()
}
);
}//using
}//List
[HttpPost]
public string Caption(string q_word)
{
using (var svc = SessionFactoryBuilder.GetSessionFactory().OpenSession())
{
if (string.IsNullOrEmpty(q_word))
return "";
else
return
svc.Query<Category>()
.Where(x => x.CategoryId == int.Parse(q_word))
.Select(x => x.CategoryName)
.SingleOrDefault();
}
}
Please do note that I modify the jQuery Ajax ComboBox's code a bit, so as to make the combobox's emitted name be compatible to ASP.NET MVC's Model
Get the code from SVN !
Or download it from google code
No comments:
Post a Comment