2016-04-08 57 views
2

我對這個網絡mvc的東西很新。瞭解我想要做什麼,我會舉一個例子。

我有一個包含數據的客戶名單,並在我看來,我用了一個<select>foreach通過所有的客戶端去顯示數據。我試圖做的是,當用戶選擇一個客戶端名稱時,他將被重定向到另一個頁面,該頁面將獲得客戶端名稱作爲參數&做這些事情。
我試過,但我被困在一個部分.net mvc選擇列表句柄選定的項目事件

<select> 
    @foreach (var item in Model.clients) 
    { 
     <option> 
      @Html.Encode(item.name) 
     </option> 
    } 
</select> 

我知道如何從頁面重定向到網頁B這樣RedirectToAction(...)
我想要做的是處理這個選擇動作調用該方法在我控制器&使用該方法的參數發送至網頁B

UPDATE

<script type="text/javascript"> 
    function Fct() { 
     var v = arguments[0]; //get The ID in the parameter 
     window.location.href = "@Url.Action("Index", "PageB")?client_id=" + v; 
    } 
</script> 

我TR滅蠅燈兩份名單,並通過@Shyui提出了一個比較容易,但我想嘗試一些與這一個

<select id="clients_list" onchange="Fct(this.value)"> 
    <option class="placeholder" selected disabled value="-1">Select Name</option> <!-- Can't be selected --> 
    @foreach (var item in Model.clients) 
    { 
     <option value="@item.ID"> 
      @Html.Encode(item.name) 
     </option> 
    } 
    <option value="0">New Client</option> 
</select> 
+0

如何觸發重定向?用戶選擇一個客戶端後,將點擊一個按鈕或通過JavaScript發生? – Christos

+0

您的問題有點過於寬泛,無法給出明確的解決方案,但我可以給您一些提示。既然你想進入頁面B,你會提交表格。你有沒有把你的控件放在一個「表單」中,對頁面B採取行動?如果你想要處理它,你可以用javascript來觸發列表提交'onchange'。 – Crowcoder

+0

@Crowcoder我可以在表單上提交,但我想在用戶選擇一個項目 – IKeepForgettingAccsMail

回答

1

聽下拉的變化情況,得到所選擇的選項和將用戶重定向到下一個動作。

<select id="Clients"> 
    @foreach (var item in Model.clients) 
    { 
     <option value="@item.name">@Html.Encode(item.name)</option> 
    } 
</select> 

這裏是JavaScript(使用jQuery)來處理更改事件

$(function(){ 
    $("#Clients").change(function(){ 
    var v=$(this).val(); 
    window.location.href="@Url.Action("Details","Clients")?clientName="+v;  
    }); 
}); 

我使用Url.Action輔助方法生成的操作方法正確的相對路徑。如果您的代碼位於剃鬚刀視圖內,這將起作用。但是,如果它位於外部js文件中,請嘗試在this answer中解釋的解決方案。

假設在ClientsController您Details操作方法接受一個客戶端名稱

public ActionResult Details(string clientName) 
{ 
    // to do : Return something 
} 

你也可以考慮使用HTML輔助方法,如Html.DropdownList產生下拉元素,而不是做一個foreach。

@Html.DropDownList("Clients",new SelectList(Model.clients, "name", "name")) 

你也可以考慮通過獨特的客戶端Id(數字),而不是客戶端名稱。某些瀏覽器中查詢字符串值的長度有限制。

+0

謝謝,但你怎麼稱之爲jQuery腳本?我練習過一次jQuery,但沒有.net是否在視圖頁面? – IKeepForgettingAccsMail

+0

您可以將該腳本放入視圖(位於@section Scripts塊內)或外部js文件中。 – Shyju

+0

我已經完成了你展示的方式,但是當我在列表中選擇一個項目時,腳本沒有被觸發,我將腳本放在腳本部分中並檢查你提供的鏈接是否缺少了什麼? – IKeepForgettingAccsMail