2012-04-13 66 views
1

如何將選定類型的值傳遞過來?我想從這裏通過它:傳遞參數

@Html.DropDownListFor(model => model.SelectedType, Model.Types, new { @onchange = "getSpecificFields(value in here)",}) 

問題是,我做了第一次初始下拉選擇後,一切正常加載。但是,如果我去改變我的選擇頁面不會更新到新的選擇。我將如何解決這個問題?

回答

2
@Html.DropDownListFor(
    model => model.SelectedType, 
    Model.Types, 
    new { 
     onchange = "getSpecificFields(this.value)" 
    } 
) 

然後:

<script type="text/javascript"> 
    function getSpecificFields(value) { 
     $.get('@Url.Action("CreateSpecific", "Employee")', { type: value }, 
      function(data) { 
       $("#specificFields").replaceWith(data); 
      } 
     ); 
    } 
</script> 

或使用完全不引人注目的javascript:

@Html.DropDownListFor(
    model => model.SelectedType, 
    Model.Types, 
    new { 
     id = "myddl", 
     data_url = Url.Action("CreateSpecific", "Employee") 
    } 
) 

,然後在一個完全獨立的JavaScript文件:

$(function() { 
    $('#myddl').change(function() { 
     var data = { type: $(this).val() }; 
     var url = $(this).data('url'); 
     $.get(url, data, function(result) { 
       $("#specificFields").replaceWith(result); 
     }); 
    }); 
}); 
+0

得到它,感謝這麼很多 – BigBug 2012-04-13 20:26:01

+0

@BlueMonster,請參閱我的第二個更好的選擇使用不顯眼的JavaScript,這完全避免了你與JavaScript混合的服務器端代碼,並允許你將腳本放在一個單獨的JavaScript文件中。 – 2012-04-13 20:27:50

+0

如何從下拉列表中進行新選擇時更新它?我以爲我可以重新加載窗口避免$ .get,但這是行不通的。 – BigBug 2012-04-13 22:13:45