2010-01-19 86 views
1

我有一個強類型的部分視圖,填充搜索表中的所有記錄。 現在我有一個文本框輸入名稱&一個按鈕來過濾可以匹配名稱的記錄(如搜索頁面)。我們如何過濾ASP.NET MVC中強類型局部視圖中的記錄?

任何人都可以提供此場景的代碼示例嗎?

如下使用JQuery基礎上,選擇單選按鈕(搜索或查詢)我的主頁加載特定視圖:

/*加載基於單選按鈕,單擊該局部視圖... */

 $(document).ready(function() { 
      $(':radio').click(function() { 
       if (this.value == '2') { 
       $('#ViewAllInquiries').load('/Home/Inquiry', function(html) { $('#ViewAllInquiries')[0].value = html; }); 
       } 
       else { 
        $('#ViewAllInquiries').load('/Home/Search', function(html) { $('#ViewAllInquiries')[0].value = html; }); 
       } 
      }); 
     }) 

這是我的局部視圖ControllerCode之一:

[HTTPGET]

public ActionResult Search() 
    { 
     var search = from s in entity.Search 
        select s; return PartialView(search); 
    } 

這裏是用戶控制局部視圖(Search.ascx):

>」%>
<table > 
<thead> 
    <tr> 
     <th align="left"> </th> 
     <th align="left"> TX_Id</th> 
     <th align="left">Name&nbsp; 
      <%= Html.TextBox("Name")%>&nbsp;<input type="submit" value="Filter" /></th> 
     <th align="left">Email Address</th> 
    </tr> 

<%的foreach(在模型VAR項) {%> <(%)=了Html.Encode(item.TX_Id)%> 「> <%=了Html.Encode(item.CustomerMaster.FullName())%> <%=了Html.Encode(item.CustomerMaster.MS_Id)%> <%}%>

謝謝你的時間。

+0

您是否限制使用jQuery或者您打算使用MS Ajax表單?如果您使用Ajax表單,您的代碼可能會大大簡化。 – Odd 2010-01-19 01:33:25

+0

我對Ajax表單開放。但我是MVC本身的新手。 你能幫我用Ajax編寫代碼示例嗎? 欣賞你的時間。 – Rita 2010-01-19 01:49:21

+0

我已經提出了我的答案,希望它有幫助。 – Odd 2010-01-19 02:15:07

回答

3

我使用Ajax表單做同樣的事情。這很容易。下面是我使用的代碼:

HTML:

<div> 
    <% 
     using (Ajax.BeginForm("Home", "Search", null, 
      new AjaxOptions { UpdateTargetId = "Output" }, 
      new { id = "SearchForm" })) 
     { 
      %> 

       <!-- Form Fields --> 
       <input name="searchField" /> 
       <input type="submit" value="Search" /> 
      <% 
     } 
    %> 

    <div id="Output"> 

    </div> 

</div> 

然後在控制器,你只需要:

public PartialViewResult Search(FormCollection form) 
{ 

    var model = YourSearchMethod(form["searchField"]); 
    return PartialView("Search", model); 

} 

與該ID的DIV「輸出」將與你的局部視圖結果更新每次提交按鈕被點擊。在你的情況下,你有兩個不同的可能的局部視圖,只需提交單選按鈕值作爲你的窗體的一部分,你可以從控制器內切換輸出視圖。

爲什麼使用FormCollection而不是參數?我有一些使用帶有Ajax形式的命名參數困難,但你可以嘗試它,看看它是如何工作的。它應該看起來像這樣:

public PartialViewResult Search(string searchField, bool inquiry) 
{ 
    if (inquiry) 
    { 
     var model = YourInquiryMethod(searchField); 
     return PartialView("Inquiry", model); 
    } 
    else 
    { 
     var model = YourSearchMethod(searchField); 
     return PartialView("Search", model); 
    } 
} 
+0

+1,我真的很喜歡這個。 – griegs 2010-01-19 02:19:31

+0

看起來很有趣。將嘗試ñ讓你知道結果不久:-) – Rita 2010-01-19 02:56:36

+0

在搜索字段文本框的Onclick上獲取Javascript錯誤消息。 – Rita 2010-01-19 16:15:44

0

我在我的一個網站上做了同樣的事情,但有點不同。

我有,在我查看下面的html;

<div class="EditProductContainer hidden"></div> 

我也有以下的jQuery;

function editBenefit(objThis) { 
    var id = $(objThis).parents('.Benefit').attr("id"); 
    $.post("/Home/jQueryGetBenefit", { Id: id }, 
     function(newHTML) { 
      $('.EditProductContainer').html(newHTML); 
     }); 
} 

然後在我的控制器中,我有;

[AcceptVerbs(HttpVerbs.Post)] 
    public PartialViewResult jQueryGetBenefit(int Id) 
    { 
     Application application = Helpers.CacheHelper.Get(); 
     Benefit thisBenefit = application.findBenefit(Id); 

     return PartialView("EditBenefit", thisBenefit); 
    } 

我認爲這是做你想要什麼,但我返回渲染PartialView和更換由局部視圖生成的HTML含有div的內容。

希望這有一些幫助。

相關問題