Asp.net mvc将C#对象传递给Javascript
我有c#类说的选项更像AjaxOptions.
public class options { public string Url {get;set;} public string httpMethod {get;set} } 和一个这样的javascript函数 function dosomething(obj) { if (obj.Url!="" and obj.HttpMethod=="something") loadsomething(); } 现在在我的控制器动作 public class mycontroller : controller { public ActionResult WhatToDo() { options obj = new options{Url="someurl"}; return PartialView(obj); } } 在我看来,我需要这个对象种类的字符串,我应该能够传递给我的方法. @model options <script> dosomething(@model.SomeFunctionToConverToString()) </script> 所以我需要这个SomeFunctionToConverToString方法,我将把这个对象转换成字符串. 谢谢 解决方法
您应该能够像您在视图中的模型属性的任何其他输出一样使用它.只需引用您要在JS函数中传递的属性.
@model options <script> dosomething('@(model.Url)'); </script> 有关在JS中使用Razor的更多信息,请参阅this post 编辑 – 可能会遇到你的东西是,如果你的URL被破坏了Razor使用上面的HTML编码,你可以使用@ Html.Raw()函数,它将传递没有HTML编码的Url属性. <script> dosomething('@Html.Raw(model.Url)'); </script> 编辑2 – 和another SO post抢救!您最有可能希望将模型转换为JSON,以便在Javascript函数中使用.所以…为了做到这一点,您将需要在视图模型中处理一个JSON对象. public class optionsViewModel { public options Options{get;set;} public string JsonData{get;set;} } 并在你的控制器: public class mycontroller : controller { public ActionResult WhatToDo() { options obj = new options{Url="someurl"}; var myViewModel = new optionsViewModel; myViewModel.options = obj; var serializer = new JavaScriptSerializer(); myViewModel.JsonData = serializer.Serialize(data); return PartialView(myViewModel); } } 最后的看法: @model optionsViewModel <script> dosomething('@model.JsonData') </script> 使用这种方法,那么你的功能将按照预期的方式工作: function dosomething(obj) { if (obj.Url!="" and obj.HttpMethod=="something") loadsomething(); } 编辑3可能最简单的方法?与编辑2相同的前提,但是这是使用View to JsonEncode模型.这两方面可能有一些好的论据是否应该在视图,控制器或存储库/服务层中完成.但是,在视图中进行转换 @model options <script> dosomething('@Html.Raw(Json.Encode(Model))'); </script> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net – 具有html5中的文本以外的输入类型的UpdatePanel
- asp.net – 使用客户端标记链接相对于Application root
- asp.net – JSON字符串中的反斜杠
- asp.net – 了解runat服务器属性
- Azure Event Hub 技术研究系列3-Event Hub接收事件
- asp.net-mvc – Visual Studio 2015异步变量未在调试器中显
- asp.net-mvc – Ajax重定向到页面而不是更新目标
- asp.net-mvc-4 – 同一网站的不同域的robots.txt文件
- asp.net-mvc-3 – 如何修复此MVC网站错误:无法加载文件或程
- asp.net – 对于单个页面,requestFiltering allowDoubleEsc
- asp.net – Visual Studio 2010:将网站项目转换
- asp.net-mvc – 对HTTP POST请求的正确响应是什么
- asp.net-mvc – 使用Automapper将字符串映射到枚
- ASP.NET应用程序通过Windows身份验证或表单身份验
- ASP.NET Page.OnLoad执行两次
- asp.net – 如何直接在aspx布局页面中嵌入ShareP
- asp.net – 基于基于角色的安全隐藏Html.ActionL
- asp.net – specflow的.msi安装程序和它的nuget包
- asp.net – 在网页上播放mp3文件
- asp.net-mvc – 具有持久HTTP连接的IDbConnectio