使用ASP.Net MVC 1.0我有一个带有一些输入控件的表单。其中一个是下拉列表(选择)。当用户更改此下拉列表时,我想使用RenderPartial()或类似的内容更新DIV标记。
我的观点目前看起来像这样:
<% using (var form = Html.BeginForm())
{ %>
<label for="FieldIdentifier">Identifier:</label>
<%=Html.TextBox("FieldIdentifier", Model.FieldIdentifier)%>
...
<label for="DataType">DataType:</label>
<%=Html.DropDownList("DataType", Model.AvailableDataTypes)%>
<div id="DataTypeOptions">
<% Html.RenderPartial("FieldDataTypeOptions", Model); %>
</div>
...
在Webforms中,我正在寻找的功能可以通过下拉列表和DIV周围的UpdatePanel来完成。 Ajax.BeginForm()可以在这里帮助或者是否需要“OnChange”客户端事件上的JScript?如果是这样,如何使用JScript更新视图的DIV部分?
任何帮助都会很棒!
干杯, 马克
答案 0 :(得分:2)
如果要根据下拉列表中的更改更新DIV,则需要在控制器上执行一个操作,该操作可以根据下拉值返回正确的部分视图。我建议使用jQuery为下拉列表添加更改处理程序,并调用操作以通过jQuery加载获取部分内容。
$(function() {
$("#DataType").change( function() {
$("#DataTypeOptions").load( '<%= Url.Action( "GetDataTypeOptions" ) %>?dataType=' + $(this).val() );
});
});
(注意div名称的变化 - 我认为你有错字)
您在与
相同的控制器上执行操作public ActionResult GetDataTypeOptions( string dataType )
{
var model = ... uses dataType to get model ...
return Partial( "FieldDataTypeOptions", model );
}
如果“Get”方法需要更多输入,只需在方法中添加参数,然后根据附加输入元素的值在加载调用中构造参数。