Asp.net mvc MVC4 Post上的空数据

Asp.net mvc MVC4 Post上的空数据,asp.net-mvc,Asp.net Mvc,很明显,我在这里遗漏了一些东西,我一辈子也弄不清是什么。 我可以很好地填充模型并将其发送到视图,但在post中,大多数数据都是null或默认值 我用/Test/Create?a1=5&a2=6&shell=7强制输入Create-GET 这可以很好地初始化测试实体。POST具有名称和CatId,但其他属性为空 任何帮助都将不胜感激 模型 看法 你需要使用 @Html.HiddenFor(model => model.Attribute1) 要将值传递给控制器而不是DisplayFor()

很明显,我在这里遗漏了一些东西,我一辈子也弄不清是什么。 我可以很好地填充模型并将其发送到视图,但在post中,大多数数据都是null或默认值

我用/Test/Create?a1=5&a2=6&shell=7强制输入Create-GET 这可以很好地初始化测试实体。POST具有名称和CatId,但其他属性为空

任何帮助都将不胜感激

模型

看法

你需要使用

@Html.HiddenFor(model => model.Attribute1)
要将值传递给控制器而不是
DisplayFor()

请更改此代码

<p>
    @Html.LabelFor(model => model.Attribute1)
    @Html.DisplayFor(model => model.Attribute1)
</p>

<p>
    @Html.LabelFor(model => model.Attribute2)
    @Html.DisplayFor(model => model.Attribute2)
</p>

@LabelFor(model=>model.Attribute1)
@DisplayFor(model=>model.Attribute1)

@LabelFor(model=>model.Attribute2) @DisplayFor(model=>model.Attribute2)

为此:

<p>
    @Html.LabelFor(model => model.Attribute1)
    @Html.HiddenFor(model => model.Attribute1)
    @Html.DisplayFor(model => model.Attribute1)
</p>

<p>
    @Html.LabelFor(model => model.Attribute2)
    @Html.HiddenFor(model => model.Attribute2)
    @Html.DisplayFor(model => model.Attribute2)
</p>

@LabelFor(model=>model.Attribute1)
@Html.HiddenFor(model=>model.Attribute1)
@DisplayFor(model=>model.Attribute1)

@LabelFor(model=>model.Attribute2) @Html.HiddenFor(model=>model.Attribute2) @DisplayFor(model=>model.Attribute2)

它应该很好用


基本上,它添加了
,因此在您单击“提交”按钮后,它将包含在您的
帖子中。

DisplayFor模板是什么样子的,如果有的话?属性26

您不能使用
Display(For)
方法创建html输入元素。创建html输入元素的唯一内置方法是
Editor(For)
Hidden(For)
。这就是想法。我想显示属性,但不允许用户更改值。我希望不必为具有30多个属性的类执行此操作,但很好。谢谢我希望对于拥有30多个属性的类不必这样做,但是哦,好吧。谢谢
@Html.HiddenFor(model => model.Attribute1)
<p>
    @Html.LabelFor(model => model.Attribute1)
    @Html.DisplayFor(model => model.Attribute1)
</p>

<p>
    @Html.LabelFor(model => model.Attribute2)
    @Html.DisplayFor(model => model.Attribute2)
</p>
<p>
    @Html.LabelFor(model => model.Attribute1)
    @Html.HiddenFor(model => model.Attribute1)
    @Html.DisplayFor(model => model.Attribute1)
</p>

<p>
    @Html.LabelFor(model => model.Attribute2)
    @Html.HiddenFor(model => model.Attribute2)
    @Html.DisplayFor(model => model.Attribute2)
</p>