我看了几篇不同的文章,他们似乎都暗示了同样的事情:
“使用所需的查询参数创建一个网址,并使用此新网址设置目标iFrame,并让此新页面读取请求”
我想知道是否有办法在不使用自定义ASPX页面的情况下执行此操作?
基本上我想基于表单上的某些值在iFrame或html Web资源中动态显示一些文本。
答案 0 :(得分:4)
SDK中没有任何内容要求使用ASPX。事实上,在CRM 2011中,我们不鼓励您,因为您需要找到一些托管您的ASP.Net页面。
使用基本HTML页面(在CRM中作为Web资源创建),您可以在HTML文档的HEAD中声明一些JScript(或者更好的是,引用JScript Web资源)。 JScript可以读取通过iFrame发送的查询字符串参数,并从那里执行所需的任何操作。
Note that the SDK states任何自定义查询字符串参数都必须通过data
参数进行编码和发送。
<HTML xmlns="http://www.w3.org/1999/xhtml"><HEAD><TITLE>Example page</TITLE>
<META charset=utf-8></HEAD>
<BODY style="BACKGROUND-COLOR: #f6f8fa; MARGIN: 0px; FONT-FAMILY: Segoe UI" contentEditable=true onload="doStuff">
<SCRIPT type=text/jscript>
function doStuff(){
getQueryStrings();
alertOrganisationName();
}
function alertOrganisationName(){
alert(window.parent.Xrm.Page.context.getOrgUniqueName());
}
function getQueryStrings() {
var message = document.getElementById("myOutputArea");
var dataParameterString, querystring;
// get data from querystring
if (window.location.search != "") {
querystring = window.location.search.substr(1).split("&");
for (var i in querystring) {
querystring[i] = querystring[i].replace(/\+/g, " ").split("=");
}
//look for the parameter named 'data'
for (var i in querystring) {
if (querystring[i][0].toLowerCase() == "data") {
dataParameterString = querystring[i][1];
break;
}
}
message.innerText += dataParameterString;
} else {
message.innerText = "No details were specified in the querystring.";
alert("ERROR: " + message.innerText);
}
}
</SCRIPT>
<DIV id="myOutputArea"></DIV>
</BODY></HTML>