jquery - javascript asp .net mvc razor 中的访问模型

标签 jquery asp.net-mvc razor

我正在使用 razor 开发 asp .net mvc 项目。

我正在尝试按如下方式在 JavaScript 中访问我的模型

alert(Model.SecurityProfile);
alert(model.SecurityProfile);
alert(@Model.SecurityProfile);
alert(@model.SecurityProfile);

var SecurityProfileViewModel = { ViewModel: model, Id: SecurityProfileId, ProfileId: $('#ProfileId').val(), JobTitleId: $('#JobTitle').val(), SecurityProfileTypeId: $('#SecurityProfileType').val(), Status: $('#ddlStatus').val(), Reason: $('#txtReason').val(), Mode: $('#hidMode').val() };

    $.ajax({
        url: '/SecurityProfile/Edit',
        type: 'POST',
        contentType: 'application/json; charset=utf-8',
        dataType: 'json',
        data: JSON.stringify(SecurityProfileViewModel),
        success: function (data) {
            alert(data);
            window.location.href = '/SecurityProfile/Index';

        }
    });

但是没有任何作用。我收到模型未定义错误

最佳答案

就 JavaScript 而言,

model 未定义。您 View 中的服务器端代码在服务器端执行。 JavaScript 对此没有概念。它只涉及该代码的客户端输出。您可以某种混合两者,但需要记住,服务器端组件只是用来发出字符串,这些字符串将成为客户端输出的一部分。

因此,例如,如果您的模型上有一个名为:

Model.SomeProperty

那么你就不能像这样直接在 JavaScript 中使用它:

alert(Model.SomeProperty)
// or
alert(SomeProperty)

这并不是使用 razor View 语法来告诉 View 引擎这里有服务器端代码。从语法上讲,这是客户端代码,并且没有 Model 客户端。因此,您需要表明需要进行服务器端预处理:

alert(@Model.SomeProperty)

此外,如果 SomeProperty 是一个字符串,请记住它的输出不会包含引号。因此,您还需要为客户端代码提供这些:

alert('@Model.SomeProperty')

因此,SomeProperty 的服务器端值在呈现给客户端时将在此处发出。因此,如果该值类似于“Hello World”,那么生成的客户端代码将是:

alert('Hello World')

最主要的是要记住服务器端代码和客户端代码之间的分离。就服务器端代码而言,所有 JavaScript/HTML/CSS 只是一大串。该 View 本质上只是创建一个大字符串发送到浏览器。一旦进入浏览器,客户端渲染就会知道 JavaScript/HTML/CSS 之间的差异,并在服务器端代码消失很久之后相应地执行。

关于jquery - javascript asp .net mvc razor 中的访问模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21391402/

相关文章:

jquery - 在每次悬停时运行 jQuery slideDown

jQuery 如何控制文档中是否存在某个元素?

javascript - 在 Electron 中单击按钮重新打开 BrowserWindow 后对象已被销毁异常

javascript - Kendo 服务器端寻呼发布到 MVC Controller

c# - 正则表达式日期和时间

javascript - 变换 div 并移动滚动位置? .scrollTop、.css 变换

asp.net-mvc - 禁用下拉菜单的默认验证

asp.net-mvc - 当没有明确指示时,浏览器为什么/如何知道缓存内容(html、css、js 等)

c# - 将文本框值复制到另一个 - ASP.NET MVC Razor

asp.net-mvc - 无法获取局部 View cshtml 的 ViewModel