调用dropdownlist中的操作已更改,并发送模型进行查看

时间:2015-06-23 18:43:00

标签: jquery ajax asp.net-mvc asp.net-mvc-4 html.dropdownlistfor

我尝试在dropdownlist中调用控件操作所选项目已更改,我使用jquery执行此操作:

  @Html.DropDownListFor(model => model.SelectedItemType.RowId, new SelectList(Model.ItemTypes, "RowId", "ItemTypeName")
                , htmlAttributes: new { @class = "form-control SelectList",@id="itemTypesDropDown", style = "height:300px", @size = 5
                }))

 $("#itemTypesDropDown").change(function () {
        var selectedValue = $('#itemTypesDropDown').val();
        $.post('@Url.Action("Select", "Home")', { selectedRowId: selectedValue }, function (data) {
        });
    }); 

,控制措施是:

  [HttpPost]
    public ActionResult Select(long selectedRowId)
    {
        SetIndexViewDatas();

        var itemtypemodel = new ItemTypeViewModel
        {
            ItemTypes = _db.Inv_ItemType.Select(x => x).ToList(),
            SelectedItemType = _db.Inv_ItemType.FirstOrDefault()
        };
        return View("Index", itemtypemodel);
    }

和index.cshtml:

  <div class="row">
        <div class="form-group verticalAlign">
            @Html.LabelFor(model => model.SelectedItemType.ItemTypeName, "Attribute Name", htmlAttributes: new { @class = "control-label col-md-4 lable" })
            <div class="col-md-8">
                @Html.EditorFor(model => model.SelectedItemType.ItemTypeName, "Attribute Name", new { htmlAttributes = new { @class = "form-control" } })
                @Html.ValidationMessageFor(model => model.SelectedItemType.ItemTypeName, "", new { @class = "text-danger" })
            </div>
        </div>
        <br />

一切正常,在选定的项目更改后调用select操作并将itemtypemodel发布到index视图,但问题是它没有在{{index中加载数据1}},我在哪里做错了?

1 个答案:

答案 0 :(得分:1)

您正在进行ajax调用,这意味着您将保持在同一页面上。你的方法需要返回一个局部视图,真的应该是一个GET。然后你需要用你返回的html更新DOM

public ActionResult Select(long selectedRowId)
{
    ....
    return PartialView("Index", itemtypemodel);
}

在视图中,包含一个元素作为占位符以呈现您返回的部分视图

<div id="myContent"></div>

并将脚本修改为

$("#itemTypesDropDown").change(function () {
    $.post('@Url.Action("Select", "Home")', { selectedRowId: $(this).val() }, function (data) {
        $('#myContent').html(data);
    });
});

或者,如果您不想更新当前页面,而是想要重定向到另一个页面,请不要使用ajax(只需使用正常的提交和重定向)。