将操作和控制器值从视图传递到另一个局部视图
本文关键字:视图 另一个局 操作 控制器 | 更新日期: 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" }
在你的控制器中,你会有action
和controller
参数:
public PartialViewResult GetParialView(string desiredAction, string desiredController) {
var viewModel = new PartialViewModel { Action = desiredAction, Controller = desiredController);
Return PartialView("Name", viewModel);
}
这段代码是我亲手打出来的,所以可能全是错误。不过,希望它能让大家明白这个想法。
快速编辑:更改了一些参数名称,使其更加清晰。