2013-03-04 2 views
0

Я пытаюсь разместить панель поиска в основном представлении индекса, чтобы я мог искать конкретные клиенты. Я сделаю один поиск по имени, и он прекрасно работает, но если я пытаюсь искать снова я ..Поиск в MVC 4 и повторение в том же представлении

Ошибка сервера в приложении «/». Ресурс не найден.

Описание: HTTP 404. Ресурс вы ищете (или один из его зависимостей ) могло быть удалена, ее название изменилось, или временно недоступна. Проверьте следующий URL-адрес и сделайте уверенным, что оно написано правильно.

Запрошенный URL:/Клиент/Клиент/Index

Я хочу, чтобы иметь возможность повторить поиск и вернуться к основному индексу, а также.

класс Controller

public class ClientController : Controller 
{ 
    private VolumeV2Context db = new VolumeV2Context(); 

    // 
    // GET: /Client/ 

    public ActionResult Index(string SearchParam) 
    { 
     if (SearchParam == null) 
     { 
       //just load the main index 
      return View(db.Clients.Take(25).ToList()); 
     } 
     else 
     { 
      //search for the client name 
      var clients = db.Clients.Where(c => c.FirstName.Contains(SearchParam) || c.LastName.Contains(SearchParam)).Take(10).ToList(); 
      return View(clients); 

     } 
    } 

Index Просмотр Я использую частичный вид здесь, а также для каждого клиента по строчкам. Я думал, что это сделает его более легким для меня

@model IEnumerable<VolumeV2.Models.Clients> 


@{ 
ViewBag.Title = "Index"; 

} 

<h2>Index</h2> 

<form action="Client/Index" method="get" > 
<input type="text" name="SearchParam" /> 
<input type="submit" value="Search" /> 
<table class="client" id ="results"> 
<tr> 
    <th> 
     @Html.DisplayNameFor(model => model.FirstName) 
    </th> 
    <th> 
     @Html.DisplayNameFor(model => model.LastName) 
    </th> 
    <th> 
     @Html.DisplayNameFor(model => model.PhoneNumber) 
    </th> 
    <th> 
     @Html.DisplayNameFor(model => model.Email) 
    </th> 
    <th> 
     @Html.DisplayNameFor(model => model.EmailList) 
    </th> 
    <th> 
     @Html.DisplayNameFor(model => model.HairType) 
    </th> 
    <th> 
     @Html.DisplayNameFor(model => model.Description) 
    </th> 
    <th></th> 
</tr> 


    @foreach(var item in Model){ 

@Html.Partial("SearchedClients",item) 

} 
      </table> 
</form> 

Частичный вид

@model VolumeV2.Models.Clients 


<tr > 
    <td> 
     @Html.DisplayFor(model => model.FirstName) 
    </td> 
    <td> 
     @Html.DisplayFor(model => model.LastName) 
    </td> 
    <td> 
     @Html.DisplayFor(model => model.PhoneNumber) 
    </td> 
    <td> 
     @Html.DisplayFor(model => model.Email) 
    </td> 
    <td> 
     @Html.DisplayFor(model => model.EmailList) 
    </td> 
    <td> 
     @Html.DisplayFor(model => model.HairType) 
    </td> 
    <td> 
     @Html.DisplayFor(model => model.Description) 
    </td> 
    <td> 
     @Html.ActionLink("Edit", "Edit", new { id = Model.Id }) | 
     @Html.ActionLink("Details", "Details", new { id = Model.Id }) | 
     @Html.ActionLink("Delete", "Delete", new { id = Model.Id }) | 
     @Html.ActionLink("Address", "GetAddress", new { id = Model.Id }) 

    </td> 
</tr> 
+0

У вас есть один возврат как «return View» («индекс», «клиент», клиенты), а другой как «return View» («Index», «client», ...) '- они копируются в ваш код? Если это так, _index_, вероятно, не должен иметь небольшой _i_ и _client_, не должен иметь небольшой _c_. Более того, вам действительно не нужно указывать их, поскольку возвращаемое вами «Просмотр» имеет то же имя, что и ваше действие, поэтому вам нужно только «return View (клиенты)». –

+0

Хорошо, я сделал изменения, и теперь я получаю новую ошибку. Путь Url изменяется, когда я пытаюсь выполнить второй поиск. Теперь я обновляю сообщение, чтобы показать свою новую ошибку. – Fpanico

ответ

0

Изменение формы действия с "/ Client/Index" на "../Client/Index"

+0

Рад, что вы отсортированы. Чтобы вы не запутались в будущем, вы можете использовать помощники формы MVC для сортировки путей - '@using (Html.BeginForm (« Поиск »,« Индекс », FormMethod.Get})) {// form stuff здесь} 'будет генерировать правильный URL-адрес, где бы вы ни находились. Вы также можете отметить свой собственный ответ как правильно :) –

Смежные вопросы