我尝试将模型转换为javascript对象,但是属性为null,如果我切换到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));
});
答案 0 :(得分:1)
这是它的设计方式。
我们来谈谈:
绝对可以确定您拥有A
类。当您在控制器中点击操作方法时,您将返回一个视图,其中包含一个类型为A的模型。
您根据类A
的外观创建表单。该模型有什么价值?可能所有属性都将具有默认值。这就是在GET HTTP请求上发生的事情。
魔术发生在POST上。如果您使用的是Razor,则您的操作方法可能会接受A
类型的对象作为参数。 ASP.NET MVC足够聪明,可以查看要发送回控制器的所有属性,并映射到类A
中。
请记住,Razor可以转换为HTML。这意味着,当您单击“提交”按钮时,Razor那里没有电源。
呈现页面后,应将所有内容都视为HTML。在处理submit
事件时,Razor无法帮助您。用HTML的角度思考,您写@Html.Raw(Json.Encode(@Model))
时会呈现什么?
请记住,您仅使用Model
来创建要呈现给用户的表单(具有默认值)。您不应该期望Model
属性在每次填写表单时都会更新(例如某些前端框架)。我建议您尝试一下:只需在页面上按CTRL + U,然后查看该特定行即可。