2013-09-25 76 views
0

嗨我想創建一個窗體上的搜索框。窗體MVC中的搜索工具4

我希望用戶能夠查找人名並在下方顯示結果列表,然後用戶點擊所需的人員姓名。

這很簡單。

然而,我想要這條記錄隨後被添加到'窗體'以及隱藏的id參數。

這樣用戶就可以點擊提交,並提交人名加上其他字段。

我遇到的問題是,使用搜索框我需要一個Html.Beginform,但我也需要一個表單來提交最終的記錄。因爲我需要一個嵌套的表格,我聽說這不是很好的做法。我知道搜索按鈕表單可能是主窗體的一部分,但我不想提交整個表單僅用於名稱查找。

理想情況下,使用部分視圖進行某種AJAX調用可能是答案,但即使使用AJAX調用,我仍然需要表單中的表單。

希望你能幫助一個新手。 謝謝。

回答

0

這是一個非常簡單的方法。

@using(Html.BeginForm("save", "record")) 
{ 
//your main form 
<a id="lookup">find a person</a> 
} 

<div class="hidden" id="lookupdialog"> 
<form id="lookupform"> //Form is optional - just for 'postable' area indication 

    //lookup form 
     <input type="text" id="query"> 
    <a id="search">search</a> 

</form> 
</div> 

因此,您有一個可見的主窗體,並隱藏了查找窗體。然後你使用javascript來顯示對話框。類似於jquery:

$('#lookup').click(/*show #lookupdialog in a dialog*/); 

所以現在你有你的輔助窗體可見。當用戶點擊搜索時,您會向服務器發送請求。

$.ajax({ 
     type: "POST", 
     url: "/persons/search", 
     data: {query: $(#query).text()}, 
     success: function(data) 
     { 

      //show the list of persons found 

     } 
    }); 

然後,當用戶選擇一個人時,您將關閉對話框並將所選項目的ID保存到您的主窗體中。