javascript - 转换后的 razor 模型为 JS 对象属性为 null

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

我尝试将我的模型转换为 javascript 对象,但属性为空,如果我切换到 MVC 标准提交,属性不为空。

Razor 代码

 @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));
    });

最佳答案

这就是它的设计方式。

我们来谈谈:

  1. Razor

非常确定您有一个A类。当您在 Controller 内调用操作方法时,您将返回一个具有 A 类型模型的 View 。

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

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

请记住,Razor 会转换为 HTML。这意味着当您单击“提交”按钮时,Razor 没有任何权力。

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

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

    关于javascript - 转换后的 razor 模型为 JS 对象属性为 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56569021/

    相关文章:

    javascript - 如何修复 Javascript 函数的 'Typerror is undefined' 消息?

    javascript - 在谷歌地图中关闭后重新打开信息窗口

    javascript - 响应式下拉导航问题

    javascript - $(window).load(function() 完全加载文档后无法执行

    c# - 如何处理 ((List<string>)Session.Add ("")

    c# - AutoMapper.Mapper.CreateMap<TSource,TDestination>()' 已过时

    asp.net - 共享相同 ASP.Net session Cookie 的独立应用程序

    javascript - "add"适用于不同链接/参数组合的函数

    javascript - 将函数直接分配给构造函数与原型(prototype)分配有什么区别,为什么?

    jquery - 在 Firefox 中分隔下拉菜单的内容