1. 运行时出现"错误 CS0006: 未能找到元数据文件". 5
.Net中前台javascript与后台c#函数相互调用问题 6
(1)用CSS控制。例 :.labcss{text-align:center;}
(2)代码:Label1.Style.Add("Text-Align","Center");
(1)强制性换行。例 :Label.Text="aaaa<br/>bbbb";
(2)自动换行。
例:
Label1.Width=100;
Label1.Style.Add("word-wrap","break-word");
Label1.Text="1111111222222";
先比较一下,Label1.Text="1 2222";与Label1.Text="1 2222"所显示的结果。
答案是显示的都是"1 2222",也就是说无论中间有多少个空格,最后显示都有一个。
假如要显示多个空格,那如何呢?
Label1.Text="1 2222";
直接用转义字符。例:Label1.Text="he said \" ok \" ";
第一次加载页面都可以得到正确的显示结果和页数,但是切换页面时不能响应分页事件。
经过跟踪程序发现切换页面每次都要调用PageLoad , 我把DataBind移出Is notpostback后,分页可以正常。说明每次在回送页面时都要重新给DataGrid加载数据,随即考虑到DataGrid设置了EnableViewState为False,DataGrid数据没有保留下来,导致DataGrid只有在每次加载都重新绑定才能实现保持状态而正常分页。
Public void DG_INSURANCE_Page(object source, DataGridPageChangedEventArgs e)
{
DG_INSURANCE.CurrentPageIndex=e.NewPageIndex ;
databind();
}
解决一:
原因:
经过跟踪,MSBuild的机制是:
当重生新生成解决方案或项目时,生成项目会先清除输出目录下的全部生成文件(注意:是全部).然后copy obj目录下的生成文件到输出目录.
所以当某项目输出目录位于其它项目目录下,并且输出目录所在的项目输出目录也在本项目目录下.当重生新生成解决方案或输出目录所在的项目时会清除输出目录下的所有生成文件.这时当输出目录所在的项目对其它输出目录在本项目目录的项目存在依赖关系,那么当csc引用将会出现"错误 CS0006: 未能找到元数据文件".
经过测试,输出目录不在项目目录内时,生成项目只会清除自已的生成文件,而不会清除依赖项目生成文件。问题解决。
结论:
如果采用公用目录重新生成解决方案或项目并且项目间存在依赖关系,项目之间有依赖与被依赖关系时,输出目录不能位于依赖项目目录内。
解决二:
执行 aspnet_regiis –i
方法一:
1、首先建立一个按钮,在后台将调用或处理的内容写入button_click中;
2、在前台写一个js函数,内容为document.getElementById("btn1").click();
3、在前台或后台调用js函数,激发click事件,等于访问后台c#函数;
方法二:
1、函数声明为public后台代码(把public改成protected也可以)
public string ss()
{
return("a");
}
2、在html里用<%=fucntion()%>可以调用前台脚本
<script language=javascript>
var a = "<%=ss()%>";
alert(a);
</script>
方法三:
1、<script language="javascript">
<!--
function __doPostBack(eventTarget, eventArgument)
{
var theForm = document.Form1; //指runat=server的form
theForm.__EVENTTARGET.value = eventTarget;
theFrom.__EVENTARGUMENT.value = eventArgument;
theForm.submit();
}
-->
</script>
<input type="button" value="按钮" >
方法四:
<script language="javascript">
function SubmitKeyClick()
{
if (event.keyCode == 13)
{
event.cancelBubble = true;
event.returnValue = false;
document.all.FunName.value="你要调用的函数名";
document.form[0].submit();
}
}
</script>
<INPUT type="text">
<input type="hidden" > 〈!--用来存储你要调用的函数 --〉
在.CS里有:
public Page_OnLoad()
{
if (!Page.IsPost())
{
string strFunName=Request.Form["FunName"]!=null?Request.Form["FunName"]:"";
//根据传回来的值决定调用哪个函数
switch(strFunName)
{
case "enter()":
enter() ; //调用该函数
break;
case "其他":
//调用其他函数
break;
default:
//调用默认函数
break;
}
}
}
public void enter()
{
//……比如计算某值
}
方法一:
通过页面上隐藏域访问<input type="hidden" runat="server">
方法二:
如后台定义了PUBLIC STRING N;前台js中引用该变量的格式为'<%=n%>'或"+<%=n%>+"
方法三:
或者你可以在服务器端变量赋值后在页面注册一段脚本
"<script language='javascript'>var temp=" + tmp + "</script>"
tmp是后台变量,然后js中可以直接访问temp获得值。
方法一:
2、后台用request["id"]来获取值;
方法二:
1、可以用cookie或session
c#代码中执行javaScript函数:
方法一:
方法二:使用Literal类,然后
private void Button2_Click(object sender, System.EventArgs e)
{
string str;
str="<script language='javascript'>";
str+="selectRange()";
str+="</script>";
//Literal1.Visible=true;
Literal1.Text=str;
}