1

我正在尝试创建一组级联下拉列表,我的主视图由一组两个部分视图组成:

@model  WebUI.Controllers.IndexViewModel
<script src="@Url.Content("~/Scripts/jquery-1.7.1.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script>

<table cellpadding="0" cellspacing="4" border="0">
<tr>
    <td>Category </td>
    <td> :</td>
    <td>@Html.Partial("ParentsUserControl", Model)</td>
</tr>
<tr>
    <td>Sub - Category </td>
    <td> :</td>
    <td><div id="Children">@Html.Partial("ParentChildrenUserControl", Model)</div></td>
</tr>

</table>

每个局部视图都有一个带有下拉列表的 AJAX 表单:

@model WebUI.Controllers.IndexViewModel

@using (Ajax.BeginForm("SelectParent", "Ticket", new AjaxOptions { UpdateTargetId = "Children" }))
{ 
@Html.DropDownListFor(
        m => m.SelectedParenId,
        new SelectList(Model.AvailableParents, "EstablishmentId", "Name"),
       string.Empty
    )
}

<script type="text/javascript">
$('#SelectedParenId').change(function () {
    $(this).parents('form').submit();
});
</script>

问题是,只要我单击第一个列表中的一个项目,就会使用第二个局部视图呈现一个新页面,我怎样才能让它在主视图内呈现局部视图而不生成新页面?, UpdateTargetId 指的是什么?

以及如何将用户选择的值发送回控制器?我创建的只是一张桌子,我应该把这张桌子放在一个表格里吗?

提前致谢!

4

2 回答 2

1

你能检查一下 web.cnfig 文件中是否添加了以下键

<add key="UnobtrusiveJavaScriptEnabled" value="true"/>
于 2013-10-03T09:21:02.890 回答
1

是的,如果您将表格放在表单中,框架将自动将您的所有模型值存储在模型包装器中。这称为模型绑定,您可以直接在控制器操作中使用它。

于 2013-10-03T09:23:15.007 回答