如何将整个模型从视图传递到控制器或Javascript

如何将整个模型从视图传递到控制器或Javascript,javascript,asp.net-mvc,razor,Javascript,Asp.net Mvc,Razor,如何将整个模型从视图传递到控制器或JavaScript函数 我已经了解了如何从文本框在视图中构建模型的模型片段,然后将其发回控制器 我的问题是,是否已经有一个模型被传递到视图中。最简单的方法是什么?我不需要更改视图中的任何模型数据。我只想把它交回控制器。在表单中,您可以对要保留的值执行此操作: @Html.HiddenFor(model = > model.valueIwant) 新的隐藏输入标记将添加到您的页面: <input type="hidden" name="valueI

如何将整个模型从视图传递到控制器或JavaScript函数

我已经了解了如何从文本框在视图中构建模型的模型片段,然后将其发回控制器


我的问题是,是否已经有一个模型被传递到视图中。最简单的方法是什么?我不需要更改视图中的任何模型数据。我只想把它交回控制器。

在表单中,您可以对要保留的值执行此操作:

@Html.HiddenFor(model = > model.valueIwant)
新的隐藏输入标记将添加到您的页面:

<input type="hidden" name="valueIwant" value="the value">

当您发布到服务器时,该值将在服务器端绑定回您的模型。您可以对任意多个值执行此操作。

如果您不更改任何内容,则只发送用于生成模型的任何密钥并让控制器重新生成模型似乎会更快,因为您已经在某个地方准备好了所有代码。更少的HTTP负载和更少的前端/附加代码。如果您真的想将值传递回控制器,请遵循您在其他地方看到的相同示例,但使用@Html.HiddenFor helper而不是textbox/checkbox/等。这将允许您发回值,但不会呈现任何对UI可见的内容。正如@Tommy所暗示的,您确实不想向客户端发送不需要的数据。这是对带宽的浪费,也是一种潜在的安全风险。您希望传递一个表示模型的唯一键,并将其作为@Html.HiddenForx=>x.IDHmm存储在页面中。我明白你的意思。所以我想用我的新控制器方法再次调用数据库并重新生成模型更快更安全?@Farmer-在大多数情况下,是的。如果它是一个超级复杂的模型,那么你可能想看看如何使用Session/HttpCache,但是大多数模型都不需要花时间来重新生成你需要的数据。我有点希望避免这样做99次。或者对模型中的每个值进行一次。我希望他们是model.ENTIREMODEL之类的隐藏对象听起来你想用webforms做一些比MVC更符合的事情。webforms通过将所有数据保存为页面中的隐藏字段来跨回发维护状态。使用MVC,理想情况下,控制器应该在每次请求时创建/获取视图所需的所有数据。所以我也必须同意“汤米”。您最好维护所需数据的ID,并在每次请求时从服务器端检索数据。否则webforms对您来说可能是一个不错的选择。也许,将数据放在会话中是一个选择,而不是将其保存在页面的标记中?