javascript - 将剃须刀模型转换为 JS 对象属性为空
问题描述
我尝试将我的模型转换为 javascript 对象但属性为空,如果我切换到 MVC 标准提交,则属性不为空。
剃刀代码
@using (Html.BeginForm(null, null, FormMethod.Post, new { id = "myForm" })){@Html.TextBoxFor(model => model.Name, null, new { @class = "form-control", @id = "drpPipeline" })}
Javascript代码
$("#modalForm").on("submit", "#myForm", function(e) {
e.preventDefault(); // prevent standard form submission
debugger;
var associationPoolUi = @Html.Raw(Json.Encode(@Model));
});
解决方案
这就是它的设计方式。
让我们谈谈:
- 剃刀
更确定你有一堂课A
。当您在控制器中点击您的操作方法时,您会返回一个具有 A 类型的模型的视图。
您可以根据类的A
外观创建表单。模型有什么价值?可能所有属性都有一个默认值。这就是 GET HTTP 请求上发生的情况。
魔术发生在 POST 上。如果您使用的是 Razor,您的操作方法可能会接受 type 的对象作为参数A
。ASP.NET MVC 足够智能,可以查看您想要发送回控制器并映射到类的所有属性A
。
请记住,Razor 会转换为 HTML。这意味着当您单击提交按钮时,Razor 在那里没有电源。
- Javascript
渲染页面后,您应该将所有内容都视为 HTML。submit
在您处理事件的那一刻,Razor 无法帮助您。用 HTML 术语思考,你认为它会在你编写时呈现什么@Html.Raw(Json.Encode(@Model))
?
请记住,您使用Model
only 创建将呈现给用户的表单(具有默认值)。您不应期望Model
每次填写表单时都会更新属性(如某些前端框架)。我建议您尝试一下:只需在页面上按 CTRL+U 并查看该特定行。
推荐阅读
- javascript - 使用 jest 在节点中模拟 moment.js
- joomla - Akeeba 备份恢复
- android - 新手 - dji android 设备上的 adb_vendor_keys 问题
- kubernetes - Gitlab Autodevops 如何始终保持一个 pod 活着
- apache-spark - 在 csv 文件中写入数据框正在从字符串列中删除前导空格
- python - 如何避免使用 set_index = False?
- java - 插入后如何自动更新视图
- c++ - 将屏幕截图位图转换为 vncviewer 的字节返回空
- c++ - 在类中打印 (C++)
- angular - 准备 Angular 发布请求