C# 为什么[HttpPost]只接收';';的编辑器;?

C# 为什么[HttpPost]只接收';';的编辑器;?,c#,asp.net-mvc,razor,C#,Asp.net Mvc,Razor,我使用的是MVC Razor,当我试图编辑某些内容时,我会将其传递给一个ViewModel它包含了所有必要的信息,我已经对此进行了测试 以下是我的看法: <div class="editor-label"> @Html.LabelFor(model => model.CollectionId) </div> <div class="editor-field"> @Html.DisplayFor(model

我使用的是MVC Razor,当我试图编辑某些内容时,我会将其传递给一个
ViewModel
它包含了所有必要的信息,我已经对此进行了测试

以下是我的看法:

<div class="editor-label">
        @Html.LabelFor(model => model.CollectionId)
    </div>
    <div class="editor-field">
        @Html.DisplayFor(model => model.CollectionId)
    </div>

    <div class="editor-label">
        @Html.LabelFor(model => model.BrandName)
    </div>
    <div class="editor-field">
        @Html.DisplayFor(model => model.BrandName)
    </div>

    <div class="editor-label">
        @Html.LabelFor(model => model.Season)
    </div>
    <div class="editor-field">
        @Html.EditorFor(model => model.Season)
        @Html.ValidationMessageFor(model => model.Season)
    </div>

@LabelFor(model=>model.CollectionId)
@DisplayFor(model=>model.CollectionId)
@LabelFor(model=>model.BrandName)
@DisplayFor(model=>model.BrandName)
@LabelFor(model=>model.seasure)
@EditorFor(model=>model.seasure)
@Html.ValidationMessageFor(model=>model.seasure)
正如您所看到的,我只使用了
@Html.EditorFor
来处理他们可以更改的信息,因为这就是我想要更改的全部内容。但我觉得有必要向他们展示其他信息,让他们确切地知道他们正在编辑什么


我的问题是,我如何实现与
@Html.EditorFor
传递回信息的等效功能,而不允许他们实际编辑信息?

必须使用Html.HiddenFor将其值传递回控制器

e、 g


@DisplayFor(model=>model.CollectionId)
@Html.HiddenFor(model=>model.CollectionId)

必须使用Html.HiddenFor将其值传回控制器

e、 g


@DisplayFor(model=>model.CollectionId)
@Html.HiddenFor(model=>model.CollectionId)

如果没有编辑信息,为什么在提交表单时还要将其传递给控制器?大概你不允许编辑它是有原因的-如果你允许它发回数据,如何阻止恶意用户编辑他们通常不允许编辑的数据?很难确定他们只想用一个信息字段编辑的
集合
,不是吗?这是非常重要的一点。即使您不允许编辑数据,“坏用户”也可以传递自己更改的数据。您可以通过对照现有数据检查数据或只更新所需的对象值来实现这一点。如果信息未被编辑,为什么在提交表单时还需要将其传递给控制器?大概你不允许编辑它是有原因的-如果你允许它发回数据,如何阻止恶意用户编辑他们通常不允许编辑的数据?很难确定他们只想用一个信息字段编辑的
集合
,不是吗?这是非常重要的一点。即使您不允许编辑数据,“坏用户”也可以传递自己更改的数据。您可以通过对照现有数据检查数据或只更新所需的对象值来实现这一点。这是否仍会显示数据?如果仍使用DisplayFor:是,这是否仍会显示数据?如果仍使用DisplayFor:是
<div class="editor-field">
    @Html.DisplayFor(model => model.CollectionId)
    @Html.HiddenFor(model => model.CollectionId)
</div>