【问题标题】:Converted razor model to JS object properties are null将剃须刀模型转换为 JS 对象属性为空
【发布时间】:2019-10-27 08:53:35
【问题描述】:

我尝试将我的模型转换为 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));
    });

【问题讨论】:

    标签: javascript jquery asp.net asp.net-mvc razor


    【解决方案1】:

    这就是它的设计方式。

    让我们谈谈:

    1. 剃刀

    更确定你有一个班级A。当你在控制器中点击你的操作方法时,你会返回一个 View,它有一个 A 类型的模型。

    您根据A 类的外观创建一个表单。模型有什么价值?可能所有属性都有一个默认值。这就是 GET HTTP 请求发生的情况。

    魔术发生在 POST 上。如果您使用的是 Razor,您的操作方法可能会接受 A 类型的对象作为参数。 ASP.NET MVC 足够智能,可以查看您想要发送回控制器的所有属性并映射到类A

    请记住,Razor 会转换为 HTML。这意味着当您单击提交按钮时,Razor 在那里没有电源。

    1. Javascript

    渲染页面后,您应该将所有内容都视为 HTML。在您处理submit 事件的那一刻,Razor 无法帮助您。用 HTML 术语思考,当你写 @Html.Raw(Json.Encode(@Model)) 时,你认为它会呈现什么?

    请记住,您使用Model 仅用于创建您将呈现给用户的表单(具有默认值)。您不应期望每次填写表单时都会更新 Model 属性(如某些前端框架)。我建议您尝试一下:只需在页面上按 CTRL+U 并查看该特定行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-04-07
      • 2019-03-20
      • 1970-01-01
      • 2019-07-16
      • 2022-01-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多