如何将所选下拉列表的ID传递给局部视图

时间:2015-01-26 12:48:32

标签: jquery asp.net-mvc asp.net-mvc-partialview

我的索引视图有一个下拉列表:

@Html.DropDownList("ABC", (SelectList) ViewBag.ABC,
    "-- Select item --", new { @onchange ="funcVes(this.value)"})
<div id="Vresult">

</div>

其JavaScript位于此索引视图的顶部,即

function funcVes(e) {
    alert(e);
    $("#tabs").tabs();
    $('#tabsDiv').show();
    $('#Vresult').load('/ABC/PartialAction?id=' + e);
};

PartialAction方法执行此操作:

public ActionResult PartialAction(int id) {
    return PartialView("_PVIEW");
}

现在,_PVIEW有许多文本框字段,我需要从控制器端填充

_PVIEW

@model Project.ViewModels.VD

//...scripts
//...begin form..

@Html.EditorFor(model => model.Main_ID) //for dropdownlist
//...20 similar boxes for related information pertaining to that dropdownlist

查看模型

包含构建部分视图的索引模型和基础模型

public class VD
{
    public int? Main_ID { get; set; }

    public a aa { get; set; } //underlying models/tables which contain the information for the 20 textboxes to be filled out
    public b bb{ get; set; } //index model
}

我基本上需要根据下拉列表选择填写此视图...

将索引和局部视图都更改为使用包含其独立模型的相同视图模型。

通过控制器/ javascript将其从下拉列表中选择的ID传递到部分视图中包含的文本框及其相关信息到其他表格的任何帮助?

1 个答案:

答案 0 :(得分:0)

您的PartialAction无法获取任何数据或为其视图提供模型。当您使用$.load部分视图时,“当前加载的页面”中没有提供数据或模型。 PartialAction服务器请求是完全独立的,因此需要获取自己的数据。

您可以简单地设置VD模型实例的属性,并将模型提供给视图,如下所示:

public ActionResult PartialAction(int id) {
    var data = someDataModel.Find(id);
    var vm = new VD()
    {
       Main_ID = id,
       aa = data.aa,
       bb = data.bb
    };
    return PartialView("_PVIEW", vm);
}

如果您使用Fiddler或Chrome F12“网络”标签等工具来观看网络流量,您会看到正在传递的原始网页及其中的内容。这可以帮助您理解请求和视图之间的关系。