将操作和控制器值从视图传递到另一个部分视图

时间:2014-04-22 12:11:47

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

我有多个索引视图,每个视图中都有不同的网格,但它们都使用相同的弹出控件。我不想做一个部分视图foreach索引视图,我有。所以我将弹出局部视图放在Shared文件夹中。

但是我在弹出的部分视图中有一个 Html.BeginForm(' Action'' Controller'),并且每个网格中的这些值都不同。如何将这些从网格视图传递到弹出窗口的局部视图?

网格视图:

  //Code Resumed
  @Html.DevExpress().GridView(
  settings =>
  {
    settings.Name = "TestMasterGrid";
    settings.Column.Add("Id");
    settings.Column.Add("Name");
    settings.Column.Add("Email");

    //Command Column Wich calls the popup control
  }

PopUp PartialView:

//Code resumed
using (Html.BeginForm("ActionINeedToGetFromTheGridView", "ControllerINeedToGetFromTheGridView", FormMethod.Post))
        {
            Html.DevExpress().TextBox(
                textBoxSettings =>
                {
                    textBoxSettings.Name = "reason";
                    textBoxSettings.ControlStyle.CssClass = "editor";
                })
            .Render();

            Html.DevExpress().Label(
                labelSettings =>
                {
                    labelSettings.Name = "sh";
                    labelSettings.ControlStyle.CssClass = "label";
                }).Render();
            Html.DevExpress().Button(
                buttonSettings =>
                {
                    buttonSettings.Name = "btnUpdate";
                    buttonSettings.ControlStyle.CssClass = "button";
                    buttonSettings.Width = 80;
                    buttonSettings.Text = "OK";
                    buttonSettings.UseSubmitBehavior = true;
                }
            )
            .Render();

谢谢!

1 个答案:

答案 0 :(得分:2)

将操作和控制器名称传递给返回PartialViewResult的操作。然后,将名称传递给部分模型,并在BeginForm语句中使用它们:

Html.BeginForm(Model.Action, Model.Controller, FormMethod.Post)

编辑:

我对DevExpress不是很熟悉,但我在设置中找到了CallbackRouteValues成员。我将这个用于我的例子:

settings.CallbackRouteValues = new { Controller = "ControllerName", Action = "GetPartialView", desiredAction = "DesiredAction", desiredController = "DesiredController" }

在您的控制器中,您拥有actioncontroller参数:

public PartialViewResult GetParialView(string desiredAction, string desiredController) {
    var viewModel = new PartialViewModel { Action = desiredAction, Controller = desiredController);
    Return PartialView("Name", viewModel);
}

我手动输入了这段代码,所以它可能充满了错误。不过,希望它可以解决这个问题。

快速编辑:更改了一些参数名称,使其更清晰一些。