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-mvc – 什么时候应该在ASP.NET MVC中使用
- asp-classic – 如何检查VBScript中是否存在POST
- ASP.NET汉字转拼音 - 输入汉字获取其拼音的具体实
- asp.net-mvc – 确定是否在布局页面中调用了Rend
- ASP.NET成员资格 – 让用户使用以前的密码
- asp.net – 从页面代码中访问代码隐藏变量
- asp.net-mvc – 使用Ninject时如何处理DBContext
- asp.net-mvc – 使用Knockout JS MVC服务器端模型
- ASP.NET MVC全能路由
- asp.net-mvc – 在服务器上安装ASP.NET MVC 4
