繁体   English   中英

C#ASP.net MVC4如何从部分视图ActionResult获取主视图控件值

[英]C# ASP.net MVC4 How to get Main View Control Values from a Partial View ActionResult

我有一个带有文本框和下拉列表的主视图:

@using (Ajax.BeginForm("GetResults", "SomeController", new AjaxOptions { HttpMethod = "Post", UpdateTargetId = "PartialDiv" }))

<select name ="dropdown1" onchange="$(this.form).submit();" >
    <option></option>                                                             
    @foreach (var recordrow in ...)                   
    {  
        <option value="@recordrow.Value" >@recordrow.Text</option>
    }
</select>

<select name ="dropdown2" >  
    <option></option>    
    @foreach (var recordrow in ...)
    {  
        <option value="@recordrow.Value" >@recordrow.Text</option>
    }
</select>
@Html.TextBox("textbox1", null, new { size = 10 })

<div id="PartialDiv" class="GroupBoxForeground" >
       @Html.Partial("PartialView")
    </div>

一旦主视图上的某些控件已填充值,主视图就会自动呈现局部视图。 在部分视图内,有一个提交按钮,它调用ActionResult。

部分视图的一部分:

@using (Ajax.BeginForm("Function1", "SomeController", new AjaxOptions { HttpMethod = "Post", UpdateTargetId = "someDiv" }))
...
<input  type="submit" name="btn_submit"  value="Process" style="width:80px"  />

我的ActionResult看起来像这样:

[HttpPost]
public ActionResult Function1(FormCollection formdata, MasterModel MstModel)
{
    ...
}

我能够将Partial View中的值成功绑定到MasterModel。 但是,调用ActionResult时无法在主视图中获取控件的值。 我在FormCollection中找不到键,并且尝试了与部分视图中用于模型绑定的方法相同的方法。

这两个视图都是使用MasterModel强类型化的。

由于渲染部分视图后可以更改主视图中的值,因此当在部分视图中单击“提交”按钮时,我需要再次获取这些值。 有没有办法在Partial View的ActionResult内部的Main View中访问那些控件值?

编辑:为了按照注释中的建议更清楚地说明情况,“我的主视图”基本上是一个搜索屏幕,带有文本框和一个下拉列表,部分视图将使用该下拉列表进行后续处理。

我的局部视图(以单独的形式)显示了搜索结果以及内部的“提交”按钮,以便根据结果来处理某些任务。 但是,此处理还需要主视图中第二个下拉列表的值和文本框的值。 即使加载了局部视图,也可以更改主视图中的那两个控件。 因此,我希望找到一种方法,当按下“提交”按钮时,即可在主视图中获取这些值。

所以您的意思是,您有两种不同的形式。 在发布第二个表单时,您还希望发布第一个表单中的控件值。 为此,您可以使用jquery ,因为表单外的值不会发布到submit

您可以在第二个表单(部分视图表单)中创建hidden字段,如下所示:

@Html.Hidden("dropdown1value", "", new { @id = "ddl1val" })
@Html.Hidden("dropdown2value", "", new { @id = "ddl2val" })

然后在您的dropdown1发生更改事件时,您可以执行以下操作:

//assuming 'dropdown1' is the `id` of your dropdown1
$("#dropdown1").change(function () {
      $("#ddl1val").val($("#dropdown1").val());

});

第二个下拉菜单的方法相同。 希望你有主意。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM