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

本文关键字:视图 另一个局 操作 控制器 | 更新日期: 2023-09-27 17:59:31

我有多个索引视图,每个视图中都有不同的网格,但它们都使用相同的弹出控件。我不想为我所拥有的每个索引视图创建局部视图。所以我把弹出的部分视图放在共享文件夹中。

但我在弹出的部分视图中有一个Html.BeginForm("操作"、"控制器"),并且这些值在每个网格中都不同。我如何将这些从网格视图传递到弹出窗口的部分视图?

网格视图:

  //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
  }

弹出部分视图:

//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();

谢谢!

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

将操作和控制器名称传递给返回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);
}

这段代码是我亲手打出来的,所以可能全是错误。不过,希望它能让大家明白这个想法。

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