Tag: #javascript

在外部JavaScript文件中插入动态值的安全方法

我正在使用以下策略实现内容安全策略标头 Content-Security-Policy: default-src ‘self’ 所以需要避免内联脚本,因为它不会执行。 但是,在MVC应用程序中,某些function(如编辑器模板)使用内联脚本。 例如tinymce_jquery_full.cshtml包含 $(function() { $(‘#@ViewData.TemplateInfo.GetFullHtmlFieldName(string.Empty)’).tinymce({ … 使用CSP时,在外部.js文件中包含动态值的好方法是什么? 我目前的想法是两种方式之一: C#生成的JavaScript 类似于JSONP的工作方式,除了在URL中我没有指定回调 – 我只是传递动态值。 在每个需要动态JavaScript的文件中,我都包含一个链接,例如 它命中ScriptController的Foo动作,它返回插入动态值bar text/javascript类型的内容。 这对我来说是一种可靠的方式,如果有点笨拙,它首先会破坏使用CSP的一些优点(几乎很容易意外地插入未编码的文本并导致XSS,因为它没有CSP)。 隐藏的表单字段 动态值将插入页面: 并在外部JavaScript文件中查找这些值: $(‘#url’).val(); 这将有效,但如果页面上有多个动态控件或者有多个相同类型的控件,则可能会很麻烦。 问题是如何有效地将每个.js脚本与其隐藏字段匹配。 有没有更好的解决方案,还是有任何我可以使用的现成框架?

你能用JavaScript调用C#函数吗?

可能重复: 从JavaScript调用ASP.NET函数? “你能用JavaScript调用C#函数吗?” 有一位采访者问道。 可能吗? 如果是,那怎么样?

如何在ASP.NET中显示消息框?

我想在成功保存任何项目时显示一个消息框。 我用谷歌搜索并尝试了不同的解决方案,但它们都没有奏效。 这是我正在使用的代码: try { con.Open(); string pass=”abc”; cmd = new SqlCommand(“insert into register values(‘” + txtName.Text + “‘,'” + txtEmail.Text + “‘,'” + txtPhoneNumber.Text + “‘,'” + ddlUserType.SelectedText + “‘,'” + pass + “‘)”, con); cmd.ExecuteNonQuery(); con.Close(); Response.Write(“alert(‘Login Successful’)”); } catch (Exception ex) { } finally { con.Close(); } (我正在使用Firefox,如果这很重要)

如何从C#主机应用程序执行Javascript回调函数

我正在C#中创建一个应用程序,它为大多数GUI提供自定义网页。 作为主持人,我想提供一个javascript API,以便嵌入式网页可以访问主机应用程序提供的一些服务。 我已经能够使用WebBrowser.ObjectForScripting属性和实现脚本类来获得这个工作的简单案例。 这适用于同步javascript调用。 但是,主机提供的一些操作是长时间运行的,并且我希望能够在操作完成时回调javascript。 这就是我遇到麻烦的地方。 使用Javascript: function onComplete( result ) { alert( result ); } function start() { window.external.LongRunningProcess( ‘data’, onComplete ); } C#: [ComVisible(true)] public class ScriptObject { public void LongRunningProcess( string data, callback ) { // do work, call the callback } } javascript中的’start’函数将整个过程踢掉。 我遇到的问题是,回调的类型是什么? 我该怎么称呼它来自C#? 如果我使用字符串类型进行回调,它会编译并运行,但是在LongRunningProcess方法中,回调实际上包含onComplete函数的全部内容(即’function onComplete(result){alert(result)}’) 如果我使用对象类型,它将作为COM对象返回。 使用Microsoft.VisualBasic.Information.TypeName方法,它返回’JScriptTypeInfo’。 但据我所知,这不是一个真正的类型,也没有通过所有MSDN真正提到它。 […]

ASP.NET – Javascript timeOut警告基于web.config中的sessionState timeOut

问题:我希望在asp.net页面上创建一个超时警告消息,其中ac#代码基于我的webconfig sessionState TimeOut属性。 web.config上的代码:

在反序列化期间将JSON日期转换为.NET DateTime的正确方法

我有一个javascript函数,用JSON数据调用MVC控制器: var specsAsJson = JSON.stringify(specs); $.post(‘/Home/Save’, { jsonData: specsAsJson }); 在服务器端,在控制器内,我似乎无法通过此错误: / Date(1347992529530)/不是DateTime的有效值。 当我调用Deserialize()(下面的方法中的第三行)时会发生exception: public ActionResult Save(string jsonData) { var serializer = new JavaScriptSerializer(); serializer.RegisterConverters(new[] { new TimeSpanJsonConverter() }); var specs = serializer.Deserialize<List>(jsonData); return View(“Index”, _allTrackerJobs); } 我一直在做一些谷歌搜索,上面的代码是我最近尝试使这项工作(从这里使用TimeSpanJsonConverter)。 其他方法显示只向服务器发送日期,但我有一个对象列表,其中日期作为一些属性。 是否有一种优雅的,普遍接受的方法来解决这个问题,还是我们还需要某种丑陋的解决方法? 解决这个问题的正确方法是什么? ===================原始问题结束=================== 编辑 – 通过使用JsonConvert序列化解决 请参阅下面的答案 (不是这个问题中糟糕的解决方法)。 编辑 – 蹩脚的解决方案 我创建了一个DTO,其字段与域对象完全相同,只是我将日期字段设置为字符串,以便反序列化。 现在我可以反序列化它,我将努力将日期转换为有效的格式,以便我可以从我的DTO创建域对象。 public class EquipmentSpecDto […]

如何将值从javascript变量传递给razor变量?

如何将值从javascript变量传递给razor变量,是否有可能是asp.net mvc razor视图引擎? @{ int a = 0; } var b = … @a = b;

从Ribbon JScript CRM Online 2011调用C#代码

我需要在实体上单击function区按钮执行一些代码,该实体从CRM Online 2011更新一些相关数据。我宁愿不必在JScript中编写所有这些逻辑。 有没有办法从JScript调用C#代码? 我查看了Microsoft在function区中使用的JScript文件,它看起来像这样: Mscrm.Campaign.copyCampaign = function (campaignId, saveAsTemplate) { var $v_0 = new RemoteCommand(“MarketingAutomation”, “CopyCampaign”, null); $v_0.SetParameter(“campaignId”, campaignId); $v_0.SetParameter(“saveAsTemplate”, saveAsTemplate.toString()); var $v_1 = $v_0.Execute(), $v_2 = $v_1.ReturnValue; openObj(Mscrm.EntityTypeCode.Campaign, $v_2, null, null, Mscrm.NavigationMode.NavigationModeInline, null); Mscrm.Utilities.refreshParentGrid(Mscrm.EntityTypeCode.Campaign, campaignId) }; 我看到正在放置一个RemoteCommand调用,我假设它正在回到一些Web服务function。 我希望能做到这样的事情。 我可以添加自己的Web服务function吗? 我能够从JScript调用为实体发送“分配”消息,就像测试一样。 这可能适用于插件,但为执行事件发送消息似乎很奇怪,实际上并不只是为了运行一些C#代码(“分配”,“更新”等)而且我不喜欢看到创建自己的消息的方法。

将序列化表格数据和附加数据发布到MVC控制器?

我正在尝试将一些POST请求发送到我的服务器的其他数据。 最初,我只发送了几种forms的信息: $.ajax({ url: ‘SaveAllDetails’, type: ‘POST’, data: $(‘form’).serialize(), dataType: ‘json’ }); 和MVC控制器方法: [HttpPost] public ActionResult SaveAllDetails([Bind(Prefix = “order”)]ExistingOrderDetailsModel existingOrderDetailsModel, [Bind(Prefix = “task”)]ExistingTaskDetailsModel existingTaskDetailsModel, [Bind(Prefix = “device”)]DeviceDetailsModel deviceDetailsModel) { …. } 这很好用。 MVC的模型绑定器能够正确地反序列化URL编码的字符串。 现在,要求已经改变。 我需要发送一个额外的数据数组以及我的三个表单。 此数据数组不保存在表单中,也没有绑定前缀。 我需要在同一个Controller方法中完成所有操作,因为所有validation都需要在单个事务中执行。 所以,我现在有: var subcomponentsGridRows = JSON.stringify(subcomponentsDetailsView.getAllGridData()); var existingOrderDetailsFormData = $(‘form#existingOrderDetailsForm’).serialize(); var existingTaskDetailsFormData = $(‘form#existingTaskDetailsForm’).serialize(); var deviceDetailsFormData = $(‘form#existingDeviceDetailsForm’).serialize() $.ajax({ […]

Silverlight在Winforms中托管

我想通过winforms浏览器在winforms中托管一个silverlight控件,但是为了工作,我需要一些方法让表单与silverlight交谈,以及相反的方式。 是否有可能以两种方式使用JavaScript作为中间人互相交互? 即,让表单与浏览器的javascript说话,并让它与silverlight控件说话? 有没有更好的办法? 甚至是一种方式? (除了将代码编译为silverlight和wpf)