2016-04-08 17 views
2

Bu net mvc olayında oldukça yeniyim. ne yapmaya çalıştığımı anlamak için bir örnek vereceğim.
Örnek
Ben verileri içeren bir müşteri listesi var ve bence ben verileri göstermek için tüm istemciler geçer bir foreach ile <select> kullandı. Yapmaya çalıştığım şey, bir kullanıcı bir müşteri adı seçtiğinde, o sayfanın müşteri adını bir parametre olarak & parametresiyle alacağı başka bir sayfaya yönlendirilecek olmasıdır.
Bu çalıştı ama.net mvc Seçilen eşya etkinliğinde liste tuunu seç

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

ben gibi A sayfası B sayfasına A'dan yönlendirmek bilen bir kısmında şaşırıp bu RedirectToAction(...)
ne de yöntemini çağırmak için bu seçme işlemi gerçekleştirecek yapmak istediğim benim kontrolör &

GÜNCELLEME

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

Ben tr sayfa B'ye bir parametre göndermek için bu yöntemi kullanmak Her iki listeleri ve @Shyui önerdiği bir daha kolaydır ied ama, açılan değişikliği etkinliğini dinleme bu bir

<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

Yönlendirme nasıl tetiklenir? Kullanıcı bir müşteriyi seçtikten sonra bir düğmeye basar mı yoksa JavaScript ile olur mu? – Christos

+0

Sorunuz kesin bir çözüm vermek için biraz geniş, ancak size bazı ipuçları verebilirim. B sayfasına gitmek istediğinizden, formu göndereceksiniz. Kontrollerinizi B formunda bir eylem ile bir formda var mı? Eğer işlemek istiyorsanız, javascript ile listenin 'değiş tokuşunu 'tetikleyebilirsiniz. – Crowcoder

+0

@Crowcoder bunu bir form gönderiminde yapabilir ancak kullanıcı – IKeepForgettingAccsMail

cevap

1

bir şey deneyin seçilen seçeneği olsun ve bir sonraki eylem için kullanıcı yönlendirmek istedi. İşte

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

Ben eylem yöntemine doğru göreli yolu oluşturmak için Url.Action yardımcı yöntemi kullanıyorum değişim olayı

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

işlemek için (jQuery kullanarak) javascript. Kodunuz jiletli görünümde ise bu işe yarar. Ancak, harici bir js dosyasındaysa, this answer'da açıklanan çözümü deneyin. ClientsController da Details eylem yöntemini varsayarsak

bir istemci Adını

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

Ayrıca açılır elemanını oluşturmak için Html.DropdownList gibi html yardımcı yöntemler kullanılarak yerine foreach yapıyor düşünebilirsiniz kabul eder.

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

Ayrıca benzersiz müşteri Id (sayısal) yerine istemci adını geçirmeden düşünebilirsiniz. Bazı tarayıcılarda sorgu dizesi değer uzunluğunun sınırlamaları vardır.

+0

teşekkür ederim ama bu jquery komut dosyasına nasıl diyorsunuz? Ben jquery bir kez pratiği yaptım ama .net ile değil mi? – IKeepForgettingAccsMail

+0

Bu komut dosyasını görünümünüzün içine (Sections Scripts bloğu içinde) veya harici bir js dosyasına koyabilirsiniz. – Shyju

+0

Gösterme şeklinizi yaptım ama listede bir öğe seçtiğimde, komut dosyası tetiklenmiyor. Komut dosyasını bir komut dosyası bölümüne yerleştirdim & sağladığınız bağlantıyı kontrol ediyorum. – IKeepForgettingAccsMail