У меня есть одно текстовое поле с именем Ключевые слова.Пользователь может ввести несколько строк для поиска.Как это возможно в mvc3?Я использую nhibernate в качестве ORM.Могу ли я создать критерии для этого?
Отредактированный сценарий
У меня есть частичное представление для поиска работы на основе следующих значений:
- Ключевые слова (несколько строк) , Промышленность (каскадный выпадающий список с функциональной областью) // работает хорошо, FunctionalArea // работает хорошо Локатор (несколько мест) , Опыт работы // работаетну
В Контроллере Я получаю эти значения из формы коллекции. Какой тип данных я должен использовать для ключевых слов и местоположения (строка или строка [])?
public ActionResult SearchResult(FormCollection formCollection)
{
IList<Jobs> JobsSearchResultList = new List<Jobs>();
//string[] keywords = null;
string location = null;
int? industry = 0;
int? functionaArea = 0;
int? experience = 0;
string keywords = null;
if (formCollection["txtKeyword"] != "")
{
keywords = formCollection["txtKeyword"];
}
//if (formCollection["txtKeyword"] != "")
//{
// keywordAry = formCollection["txtKeyword"].Split(' ');
// foreach (string keyword in keywordAry)
// {
// string value = keyword;
// }
//}
......retrieving other values from formcollection
....
//Now passing these values to Service method where i have criteria for job search
JobsSearchResultList = oEasyJobsService.GetJobsOnSearchExists(keywords,industry,functionaArea,location,experience);
return View(JobsSearchResultList);
}
В Услуги Я сделал как:
public IList<EASYJobs> GetJobsOnSearchExists(string keywords, int? industryId, int? functionalAreaId, string location, int? experience)
{
IList<JobLocation> locationlist = new List<JobLocation>();
IList<Jobs> JobsList = null;
var disjunction = Expression.Disjunction();
ICriteria query = session.CreateCriteria(typeof(Jobs), "EJobs");
if (keywords != null)
{
foreach (string keyword in keywords)
{
string pattern = String.Format("%{0}%", keyword);
disjunction
.Add(Restrictions.InsensitiveLike("Jobs.keywords", pattern,MatchMode.Anywhere))
.Add(Restrictions.InsensitiveLike("YJobs.PostTitle",pattern,MatchMode.Anywhere));
}
query.Add(disjunction)
.Add(Expression.Eq("EASYJobs.Industry.IndustryId", industryId))
.Add(Expression.Eq("Jobs.FunctionalArea.FunctionalAreaId", functionalAreaId))
.Add(Expression.Eq("Jobs.RequiredExperience", experience)));
}
else
{..
}
JobsList = criteria.List<Jobs>();
}
Проблемы, с которыми я сталкиваюсь:
- В контроллере, если я использую строку [], то Split (',') не разделяет строку с указанным разделителем. Она передает строку в том виде, как она есть в Service.
2. В службах iя пытаюсь заменить строку на% {0}%, строки с пробелами заменяются / concat () здесь с указанным разделителем.Но проблема здесь в том, что всегда возвращать весь список заданий, значит не давать требуемый вывод.Пожалуйста, помогите ...