Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 发布传递给视图的相同模型_C#_Asp.net Mvc_Razor - Fatal编程技术网

C# 发布传递给视图的相同模型

C# 发布传递给视图的相同模型,c#,asp.net-mvc,razor,C#,Asp.net Mvc,Razor,我有一个简单的帐户更新表单,可以发布到Update()函数。带有当前用户帐户信息的模型将传递给包含此表单的视图,因此字段将自动填写 表格 @model SomeController.AccountModel @using (Html.BeginForm("Update", "SomeController", FormMethod.Post)) { @Html.LabelFor(u => u.Username) @Html.TextBoxFor(u => u.Usern

我有一个简单的帐户更新表单,可以发布到Update()函数。带有当前用户帐户信息的模型将传递给包含此表单的视图,因此字段将自动填写

表格

@model SomeController.AccountModel
@using (Html.BeginForm("Update", "SomeController", FormMethod.Post)) {
    @Html.LabelFor(u => u.Username)
    @Html.TextBoxFor(u => u.Username)
    ...
每个属性都有备份,例如
backupUsername
,因此我可以在数据库中搜索旧属性并从中更新

更新()


但是,当我提交表单时,传递了一个全新的模型,因为
newInfo.backupUsername
为空。如何将相同的模型传回?

我通常创建隐藏字段:

@model SomeController.AccountModel
@using (Html.BeginForm("Update", "SomeController", FormMethod.Post)) {
    @Html.HiddenFor(u => u.backupUsername)
    @Html.LabelFor(u => u.Username)
    @Html.TextBoxFor(u => u.Username)

这样,当页面加载时,您可以填充字段,但用户不会对其进行更改,因此会像在帖子中一样传递该字段。

我通常会创建隐藏字段:

@model SomeController.AccountModel
@using (Html.BeginForm("Update", "SomeController", FormMethod.Post)) {
    @Html.HiddenFor(u => u.backupUsername)
    @Html.LabelFor(u => u.Username)
    @Html.TextBoxFor(u => u.Username)

这样,当页面加载时,您可以填充字段,但用户不会对其进行更改,因此它会像在帖子中一样传递。

您可以使用隐藏字段向MVC显示您正在保留旧值,如下所示:

@Html.HiddenFor(x => x.Backupsomething)

您可以使用隐藏字段向MVC显示您正在保留旧值,如下所示:

@Html.HiddenFor(x => x.Backupsomething)
始终会创建一个新模型-由于HTTP是无状态的,因此在多个请求上没有视图模型的自动持久性(无需手动使用会话状态或其他机制)。POST操作中显示的模型是通过将表单中的字段绑定到该对象而创建的。如果字段不存在,则不会绑定任何内容

你有几个选择。第一个是将隐藏字段添加到视图中,以便模型绑定器将拾取它们:

@Html.HiddenFor(m => m.backupUsername)
但是请注意,这是不安全的,因为任何人都可以编辑HTML来操作此字段。如果需要安全性,则必须对其进行哈希/加密或再次从数据库中检索。

始终会创建一个新模型-由于HTTP是无状态的,因此无法在多个请求上自动持久化视图模型(无需手动使用会话状态或其他机制)。POST操作中显示的模型是通过将表单中的字段绑定到该对象而创建的。如果字段不存在,则不会绑定任何内容

你有几个选择。第一个是将隐藏字段添加到视图中,以便模型绑定器将拾取它们:

@Html.HiddenFor(m => m.backupUsername)

但是请注意,这是不安全的,因为任何人都可以编辑HTML来操作此字段。如果需要安全性,则必须对其进行哈希/加密或再次从数据库中检索。

在表单中添加隐藏字段。在表单中添加隐藏字段。感谢您的解释。如果我不想使用隐藏字段(以防用户查看源代码/检查元素并更改值,加密与否),还有什么我可以使用的吗?谢谢您的解释。如果我不想使用隐藏字段(如果用户查看源代码/检查元素并更改值,加密或不加密),那么还有什么我可以使用的吗?