javascript asp .net mvc razor中的访问模型
Posted
技术标签:
【中文标题】javascript asp .net mvc razor中的访问模型【英文标题】:access model in javascript asp .net mvc razor 【发布时间】:2014-02-18 21:55:58 【问题描述】:我正在使用 razor 开发 asp .net mvc 项目。
我正在尝试按如下方式在 javascript 中访问我的模型
警报(模型。安全配置文件); 警报(模型.SecurityProfile); 警报(@Model.SecurityProfile); 警报(@model.SecurityProfile);var SecurityProfileViewModel = 视图模型:模型, 标识:安全配置文件标识, 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';
);
但是没有任何效果。我得到模型是未定义的错误
【问题讨论】:
这里我已经详细解释过了***.com/a/41312348/2592042 【参考方案1】:model
是未定义的,就 JavaScript 而言。您视图中的服务器端代码在服务器端执行。 JavaScript 没有这个概念。它只关心该代码的客户端输出。您可以某种混合使用这两者,但需要记住,服务器端组件只是用来发出字符串,这些字符串将成为客户端输出的一部分。
因此,例如,如果您的模型上有一个名为:
Model.SomeProperty
那么你就不能像这样在 JavaScript 中直接使用它:
alert(Model.SomeProperty)
// or
alert(SomeProperty)
这不是使用 razor 视图语法告诉视图引擎这里有服务器端代码。这是语法上的客户端代码,没有Model
客户端。所以你需要指出有服务器端的预处理要做:
alert(@Model.SomeProperty)
另外,如果SomeProperty
是一个字符串,那么请记住它的输出 不会包含引号。因此,您还需要为客户端代码提供这些:
alert('@Model.SomeProperty')
因此,SomeProperty
的服务器端值将在呈现给客户端时在此处发出。因此,如果值类似于"Hello World"
,那么生成的客户端代码将是:
alert('Hello World')
主要是要记住服务器端代码和客户端代码之间的分离。就服务器端代码而言,所有 JavaScript/html/CSS 都只是一个大字符串。视图本质上只是创建一个大字符串发送到浏览器。一旦进入浏览器,客户端渲染就知道 JavaScript/HTML/CSS 之间的区别并相应地执行,在服务器端代码消失很久之后。
【讨论】:
我明白你的意思。而且效果很好。感谢那。现在,如果我想将模型(对象的实例)本身分配给数据:ajax 调用的一部分,以便在控制器的操作方法参数中访问相同的参数,我应该怎么做? @SARAVAN:不清楚你的意思。 AJAX 调用是请求/响应,就像任何页面加载一样。本质上,您需要在调用中提供数据(例如在包含来自客户端的模型字段的 POST 中)或从数据库持久性中获取模型的数据(例如,如果 POST 仅包含 ID 和模型需要仅基于该 ID 在服务器端构建)。【参考方案2】:您可以将cshtml中的模型序列化为js变量,以便以后通过javascript访问它
<script>
var data = @Html.Raw(Json.Serialize(@Model));
</script>
【讨论】:
以上是关于javascript asp .net mvc razor中的访问模型的主要内容,如果未能解决你的问题,请参考以下文章
WebStorm ASP.NET MVC JavaScript 调试
asp.net mvc 显示 ViewBag 字典到 javascript
ASP.NET MVC 视图 - 获取 JavaScript 的虚拟路径 [重复]
asp.net mvc 开发人员的 javascript 最佳实践