【问题标题】:How to pass parent view data when using partial view使用局部视图时如何传递父视图数据
【发布时间】:2015-10-22 21:34:36
【问题描述】:

我的父视图中有一个下拉列表,当我选择一个值时,我想保存该值并在我单击部分视图中的按钮时使用它。目前,如果我单击局部视图中的按钮,它将没有父视图的值。但是,如果我将下拉列表移动到部分视图,一切正常,但我想将它保留在我的父视图中。

父视图(这是下拉列表所在的位置)

<div class="btn-toolbar">
    <div class="btn-group">
        <button type="button" class="btn btn-primary" id="FetchProcessId">Fetch Process Id</button>
    </div>
</div>

<div class="col-md-3" style="@displayAdminLead">
    <div class="dropdown div-inline">
        @{
            var envlist = new List<SelectListItem>()
            {
                new SelectListItem() {Value = "OAK", Text = "OAK"},
                new SelectListItem() {Value = "QA", Text = "QA"},
                new SelectListItem() {Value = "PROD", Text = "PROD"}


            };
        }
        @Html.DropDownListFor(m => m.EnvironmentName, envlist, "Environment", new {@class = "form-control"})
    </div>
</div>


<div style="overflow: auto">
        @using (Html.BeginForm())
        {
            <div id="FetchProcessIdDiv" style="">
                @Html.Action("FetchProcessId", Model)
            </div>
        }
</div>

局部视图

<table class="table table-hover">
    <tbody>
        <tr>
            <td>System Name:</td>
            <td>
                @Html.DropDownListFor(m => m.FetchProcessIdModel.SystemName, new SelectList(Model.FetchProcessIdModel.DropDownOptions, "valueId", "value"))
            </td>
            <td rowspan="2">@Html.TextAreaFor(m => m.FetchProcessIdModel.Message, 12, 50, null)</td>
        </tr>
        <tr>
            <td>Deliverable Id:</td>
            <td>@Html.TextBoxFor(m => m.FetchProcessIdModel.DeliverableId)</td>
        </tr>
    </tbody>
</table>

<input type="submit" name="submit" class="btn btn-default" value="Fetch Process Id" />

父模型

public class ParentModel
{
    public string EnvironmentName { get; set; }
}

控制器

[HttpPost]
    public ActionResult ParentClass(string submit, ParentModel model)
    {
        //omit
        var envName = model.EnvironmentName;
        //I am not seeing a value for model.EnvironmentName at this point
    }

【问题讨论】:

  • 只要下拉菜单与提交按钮的形式相同,它应该可以工作。发布您的父视图代码,包括表单和加载部分的位置。

标签: c# asp.net asp.net-mvc asp.net-mvc-4


【解决方案1】:

为了让输入将其值发布到控制器,它需要位于表单元素内。

    <div style="overflow: auto">
        @using (Html.BeginForm())
        {
            <div class="btn-toolbar">
                <div class="btn-group">
                    <button type="button" class="btn btn-primary" id="FetchProcessId">Fetch Process Id</button>
                </div>
            </div>

            <div class="col-md-3" style="@displayAdminLead">
                <div class="dropdown div-inline">
                    @{
                        var envlist = new List<SelectListItem>()
                        {
                            new SelectListItem() {Value = "OAK", Text = "OAK"},
                            new SelectListItem() {Value = "QA", Text = "QA"},
                            new SelectListItem() {Value = "PROD", Text = "PROD"}
                        };
                    }

                    @Html.DropDownListFor(m => m.EnvironmentName, envlist, "Environment", new {@class = "form-control"})
                </div>
            </div>


            <div id="FetchProcessIdDiv" style="">
                @Html.Action("FetchProcessId", Model)
            </div>
        }
    </div>

【讨论】:

    猜你喜欢
    • 2019-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多