MVC 4将模型从一个控制器传递到视图,从视图传递到其他控制器,用户无法编辑所有字段

时间:2013-05-23 07:52:59

标签: asp.net-mvc asp.net-mvc-4

我在MVC4中有点新,我无法弄明白。

              "CustomViewMOdel"        "CustomViewMOdel"
"ControllerX" ----------------> "VIEW" -----------------> "ControllerY"

我的问题是我想将我的customviewmodel传递给视图(工作正常!)。在View中向用户显示一些模型的字段(也可以正常工作)。但是现在我想要用户,更改模型字段的一个字段,然后将整个模型传递给控制器​​X(填充所有字段,包括用户能够更改的字段以及刚刚显示的其他字段)

任何人都可以提供一个非常简单的代码示例,说明如何执行此操作吗?

2 个答案:

答案 0 :(得分:0)

您只需创建一个发布到另一个控制器的表单:

ControllerX:

public ActionResult DoSomething()
{
     return View(new CustomVM());
}

ViewA

@Model CustomViewModel

@using Html.BeginForm("DoSomethingElse", "ControllerY")
{
    @Html.EditorFor(vm => vm.SomeProperty)
    <input type="submit" value="OK" />
}

ControllerY

public ActionResult DoSomethingElse(CustomViewModel vm)
{
    // do something else
}

答案 1 :(得分:0)

您可以在表单上使用@Html.HiddenFor(o => o.Property)。 这不会显示其中的属性。 但高级用户可以通过开发控制台更改属性。因此,您应该检查ControllerY中的所有更改

示例:

@Html.HiddenFor(o => o.Id)
@Html.HiddenFor(o => o.Name)
@Html.EditorFor(o => o.Description)

<input type="submit" value="OK" />

这只会让用户更改描述,但在FormCollection上仍然有“id”和“name”。