2012-04-13 96 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