我有多个索引视图,每个视图中都有不同的网格,但它们都使用相同的弹出控件。我不想做一个部分视图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();
谢谢!
答案 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" }
在您的控制器中,您拥有action
和controller
参数:
public PartialViewResult GetParialView(string desiredAction, string desiredController) {
var viewModel = new PartialViewModel { Action = desiredAction, Controller = desiredController);
Return PartialView("Name", viewModel);
}
我手动输入了这段代码,所以它可能充满了错误。不过,希望它可以解决这个问题。
快速编辑:更改了一些参数名称,使其更清晰一些。