SAR*_*VAN 14 asp.net-mvc jquery razor
我正在使用剃须刀开发asp .net mvc项目.
我试图在javascript中访问我的模型如下
警报(Model.SecurityProfile); 警报(model.SecurityProfile); 警报(@ Model.SecurityProfile); 警报(@ model.SecurityProfile);var SecurityProfileViewModel = { ViewModel:模型, Id:SecurityProfileId, ProfileId:$('#ProfileId').val(), JobTitleId:$('#JobTitle').val(), SecurityProfileTypeId:$('#SecurityProfileType').val(), 状态:$('#ddlStatus').val(), 原因:$('#txtReason').val(), 模式:$('#hidMode').val() };
Run Code Online (Sandbox Code Playgroud)$.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'; } });
但没有任何作用.我得到的模型是未定义的错误
Dav*_*vid 47
model就JavaScript而言,是未定义的.视图中的服务器端代码执行服务器端.JavaScript没有这个概念.它只关注该代码的客户端输出.你可以种混合使用这两种,但需要记住的是,服务器端组件就在那里发出的字符串,这将是客户端输出的一部分.
因此,例如,如果您的模型上有一个名为的属性:
Model.SomeProperty
Run Code Online (Sandbox Code Playgroud)
那么你不能像这样直接在JavaScript中使用它:
alert(Model.SomeProperty)
// or
alert(SomeProperty)
Run Code Online (Sandbox Code Playgroud)
那不是使用剃刀视图语法告诉视图引擎这里有服务器端代码.这是语法上的客户端代码,没有Model客户端.因此,您需要指出要执行的服务器端预处理:
alert(@Model.SomeProperty)
Run Code Online (Sandbox Code Playgroud)
另外,如果SomeProperty是一个字符串,请记住它的输出不会包含引号.因此,您还需要为客户端代码提供这些代码:
alert('@Model.SomeProperty')
Run Code Online (Sandbox Code Playgroud)
因此,服务器端的值SomeProperty将在呈现给客户端时在此处发出.因此,如果值类似于"Hello World"那么生成的客户端代码将是:
alert('Hello World')
Run Code Online (Sandbox Code Playgroud)
最重要的是要记住服务器端代码和客户端代码之间的分离.就服务器端代码而言,所有JavaScript/HTML/CSS只是一个大字符串.该视图基本上只是创建一个发送到浏览器的大字符串.一旦它进入浏览器,客户端渲染就会知道JavaScript/HTML/CSS之间的差异并在服务器端代码消失很久之后执行.
| 归档时间: |
|
| 查看次数: |
74825 次 |
| 最近记录: |