MVC模式不会传递到控制器(MVC Model not passed to controller)

2019-11-03 02:11发布

我几乎不好意思,我不能得到这个工作。 我有这样一个模型:

public class Test
{
  public string Test1 {get; set; }
  public string Test2 {get; set; }
}

我有正确显示两个测试1和TEST2剃刀图。 Test1的显示就像这样:

@Html.LabelFor(model => mode.Test1)
@Html.Test1

Test2的显示是这样的:

@Html.LabelFor(model => model.Test2)
@Html.EditorFor(model => model.Test2)

即我只是想展示的Test1,但希望用户能够编辑的Test2。

这是一个形式中:

@using(Hmtl.BeginForm("Action1", "Controller1", FormMethod.Post)

在Controller1.Action1它接收到的模型:

public ActionResult Action1(Test m)
{

}

但在这里m.Test1为null,m.Test2正确填充。 m.test1正确显示在视图中。

我confused.com

提前致谢,

射线

Answer 1:

该模型粘合剂只能看到它们从HTML表单贴在表格值,它是从仅形式的元件。 这不会产生这样的元件:

@Html.Test1

这可能显示到该视图所绑定的值(它真的吗?我从来没有见过它这样做,也许这应该是@Model.Test1 ?),但需要有某种类型的HTML表单元素发布值回服务器。 ( inputselecthidden等)

为了好玩,看看在浏览器中生成的HTML。 他们与价值只是标准的表单元素,没有什么存储整个模型的任何地方。 模型绑定只是试图智能地重新构建基于HTML表单发送的名称/值对的典范。

尝试添加一个隐藏字段的形式,以及:

@Html.LabelFor(model => model.Test1)
@Model.Test1
@Html.HiddenFor(model => model.Test1)

这应创建一个input type="hidden"在与该值,这将张贴值提供给控制器动作时被包含的形式。



文章来源: MVC Model not passed to controller