2013-03-04 67 views
0

我試圖在主索引視圖中放置搜索欄,以便我可以搜索特定的客戶端。我會做一個名字一個搜索,它工作正常,但如果我再次嘗試搜索,我得到..在MVC 4中搜索並在相同的視圖中重複

服務器錯誤「/」應用。無法找到該資源。

說明:HTTP 404。您正在查找的資源(或 它依賴一個)可能已被刪除,更名,或者是 暫時不可用。請檢查以下URL並確定 拼寫正確。

請求的URL:/客戶端/客戶端/指數

我希望能夠重複搜索,並返回到主索引爲好。

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

     } 
    } 

索引視圖 我在這裏使用的局部視圖,以及用於通過線每個客戶端線。我認爲這將使它更容易爲我

@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

表單動作你有一個返回作爲'返回視圖(「索引」,「客戶端」,客戶端)'和另一個'返回視圖(「索引」,「客戶端」,...)' - 他們複製粘貼你的代碼?如果是這樣,_index_可能不應該有一個小的_i_,並且_client_不應該有一個小的_c_。更好的是,你實際上並不需要指定它們,因爲你要返回的'View'與你的動作名稱相同,所以你所需要的只是'返回View(clients)' – 2013-03-04 23:57:02

+0

正確指出,我已經做了變化,我現在得到一個新的錯誤。當我嘗試進行第二次搜索時,Url路徑發生變化。我現在更新帖子以顯示我的新錯誤。 – Fpanico 2013-03-05 03:32:37

回答

0

更改從 「/客戶/指數」,以 「../Client/Index」

+0

很高興你排序。所以你不會在將來感到困惑,你可以使用MVC窗體幫助器來整理路徑 - 「@using(Html.BeginForm(」Search「,」Index「,FormMethod.Get})){// form stuff這裏}'會從你的View的任何位置生成正確的URL。你也可以標記你自己的答案是正確的:) – 2013-03-05 08:57:33

相關問題