在javascript asp .net mvc razor中访问模型
我正在使用razor开发asp .net mvc项目。
我试图在javascript中访问我的模型如下
警报(Model.SecurityProfile); 警报(model.SecurityProfile); 警报(@ Model.SecurityProfile); 警报(@ model.SecurityProfile);
var SecurityProfileViewModel = {ViewModel:model,Id:SecurityProfileId,ProfileId:$(’#ProfileId’)。val(),JobTitleId:$(’#JobTitle’)。val(),SecurityProfileTypeId:$(’#SecurityProfileType’)。 val(),状态:$(’#ddlStatus’)。val(),原因:$(’#txtReason’)。val(),模式:$(’#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
是未定义的。 视图中的服务器端代码执行服务器端。 JavaScript没有这个概念。 它只关注该代码的客户端输出。 您可以将两者混合使用,但需要记住,服务器端组件只是用于发出字符串,这些字符串将成为客户端输出的一部分。
因此,例如,如果您的模型上有一个名为的属性:
Model.SomeProperty
那么你不能像这样直接在JavaScript中使用它:
alert(Model.SomeProperty) // or alert(SomeProperty)
那不是使用剃刀视图语法告诉视图引擎这里有服务器端代码。 这是语法上的客户端代码,没有Model
客户端。 因此,您需要指出要执行的服务器端预处理:
alert(@Model.SomeProperty)
此外,如果SomeProperty
是一个字符串,请记住它的输出不会包含引号。 因此,您还需要为客户端代码提供这些代码:
alert('@Model.SomeProperty')
因此, SomeProperty
的服务器端值将在呈现给客户端时在此处发出。 因此,如果值类似于"Hello World"
那么生成的客户端代码将是:
alert('Hello World')
最重要的是要记住服务器端代码和客户端代码之间的分离。 就服务器端代码而言,所有JavaScript / HTML / CSS只是一个大字符串。 该视图基本上只是创建一个发送到浏览器的大字符串。 一旦它进入浏览器,客户端渲染就会知道JavaScript / HTML / CSS之间的差异,并在服务器端代码消失很久之后相应地执行。
- 为什么Asp.Net MVC 5将@ Scripts.Render(“〜/ bundles / jquery”)放在_Layout.cshtml的底部?
- 显示MVC3局部视图的Jquerymodal dialog – 仅首次单击
- 使用ASP.NET MVC ActionResult的jQuery Sortable .toArray
- jqgrid外的自定义分页
- Ajax submit在首次提交后发布完整post
- Fetch API调用会导致新的Asp.net会话
- jQuery DataTables列使用Bootstrap Modal显示/隐藏切换
- 如何在内存中创建文件然后通过asp.net mvc + jquery将文件发送给用户?
- 使用ASP.net MVC和JQuery将HTML标记(代码)作为字符串发布