ASPX页面
<%@ Page Language="C#" AutoEventWireup="true" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
  <title>SLBigOrSmall</title>
  <style type="text/css">
  html, body {
height: 100%;
overflow: auto;
  }
  body {
padding: 0;
margin: 0;
  }
  #silverlightControlHost {
height: 100%;
text-align:center;
  }
  </style>
  <script type="text/javascript" src="Silverlight.js"></script>
  <script type="text/javascript">
  function onSilverlightError(sender, args) {
  var appSource = "";
  if (sender != null && sender != 0) {
  appSource = sender.getHost().Source;
  }
   
  var errorType = args.ErrorType;
  var iErrorCode = args.ErrorCode;  if (errorType == "ImageError" || errorType == "MediaError") {
  return;
  }  var errMsg = "Silverlight 应用程序中未处理的错误 " + appSource + "\n" ;  errMsg += "代码: "+ iErrorCode + " \n";
  errMsg += "类别: " + errorType + " \n";
  errMsg += "消息: " + args.ErrorMessage + " \n";  if (errorType == "ParserError") {
  errMsg += "文件: " + args.xamlFile + " \n";
  errMsg += "行: " + args.lineNumber + " \n";
  errMsg += "位置: " + args.charPosition + " \n";
  }
  else if (errorType == "RuntimeError") {  
  if (args.lineNumber != 0) {
  errMsg += "行: " + args.lineNumber + " \n";
  errMsg += "位置: " + args.charPosition + " \n";
  }
  errMsg += "方法名称: " + args.methodName + " \n";
  }  引发新错误(errMsg);
  }
  </script>
</head>
<body>
  <form id="form1" runat="server" style="height:100%">
  <div style=" text-align:center;">
请选择:<select id="selectColor" >
<option value="White">白色</option>
<option value="Gray">灰色</option>
<option value="Black">黑色</option>
</select>
<input id="Text1" type="text" />
</div>
问题一:“select”和“input”这两个元素存在, 但是在项目启动后,网页中却看不见。
  <div id="silverlightControlHost">
  <object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="650px" height="600px">
<param name="source" value="ClientBin/SLBigOrSmall.xap"/>
<param name="onError" value="onSilverlightError" />
<param name="background" value="white" />
<param name="minRuntimeVersion" value="4.0.50826.0" />
<param name="autoUpgrade" value="true" />
<a href="http://go.microsoft.com/fwlink/?LinkID=149156&v=4.0.50826.0" style="text-decoration:none">
  <img src="http://go.microsoft.com/fwlink/?LinkId=161376" alt="获取 Microsoft Silverlight" style="border-style:none"/>
</a>
</object><iframe id="_sl_historyFrame" style="visibility:hidden;height:0px;width:0px;border:0px"></iframe></div>
  </form>
</body>
</html>
MainPage.xaml.cs后台代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using System.Windows.Browser;namespace SLBigOrSmall
{
  public partial class MainPage : UserControl
  {
  public MainPage()
  {
  InitializeComponent();
  HtmlLinkSL();
  }  #region 放大缩小元素  private void LayoutRoot_MouseWheel(object sender, MouseWheelEventArgs e)
  {
  // e.Delta滚动一个齿轮为120,向前为正,向后为负所以120/1200,让增量变到正负0.1
  double delta = e.Delta / 1200.0;
  canvasTrans.ScaleX += delta;
  canvasTrans.ScaleY += delta;
  }  #endregion  #region Html操作Silverlight元素  private void HtmlLinkSL()
  {
  //获取到页面上的selectColor的Html控件
  HtmlElement htmlSelectColor = HtmlPage.Document.GetElementById("selectColor");
//为这个Html控件增加onchange选择变化事件htmlSelectColor.AttachEvent("onchange", new EventHandler<HtmlEventArgs>(htmlSelectColor_onChange));
问题二:发生“未将对象引用设置到对象的实例。”,可是“selectColor”这个元素在aspx页面中是存在的。就在上面标注的位置。
  }
  public void htmlSelectColor_onChange(object sender, HtmlEventArgs e)
  { 
  HtmlElement htmlSelect=sender as HtmlElement;
  //获取到html控件选择的值,根据这个值为Html
  switch(htmlSelect.GetAttribute("value"))
  {
  case "White":
  ellipse1.Fill = new SolidColorBrush(Colors.White);
  break;
  case "Gray":
  ellipse1.Fill = new SolidColorBrush(Colors.Gray);
  break;
  case "Black":
  ellipse1.Fill = new SolidColorBrush(Colors.Black);
  break;
  default:
  break;
  }
  }  #endregion
  #region Silverlight操作Html元素  private void Button_Click(object sender, RoutedEventArgs e)
  {
  HtmlElement htmlElem = HtmlPage.Document.GetElementById("Text1");
问题三:发生“未将对象引用设置到对象的实例。”,可是“Text1”这个元素在aspx页面中是存在的。就在上面标注的位置。
  htmlElem.SetAttribute("value", "Silverlight操作成功Html");  }
  #endregion
  }
}开发运行环境是:VS2010SP1,SL4...

解决方案 »

  1.   

    页面运行后打开源文件看看你那个select 是不是还是这个,这个错误告诉你就是将null值付给了变量了,打个断点调试一下我感觉你这样获取前台界面的数据还不如直接在select这个标签中添加runat=server来的方便,直接就在后台就可以调用了
      

  2.   

    把你的<input id="Text1" type="text" /> 改成<input id="Text1" type="text" runat="server"  />
    加上runat="server"应该就行了 希望能解决楼主问题
      

  3.   

    未将对象引用到实例化这种错误一般就是空异常
    也就是没有获取到值
    在对象没有实例化 比如AA a=null;
    你在用的时候直接a.XX();//这种也会爆未将对象引用到实例化但是这样就对了
    a=new AA();
    a.XX();
      

  4.   

    将它们放在服务端运行
    <select id="selectColor" runat="server">
    <option value="White">白色</option>
    <option value="Gray">灰色</option>
    <option value="Black">黑色</option>
    </select>
    <input id="Text1" type="text" runat="server"/>
    </div>
      

  5.   

    把你的<input id="Text1" type="text" /> 改成<input id="Text1" type="text" runat="server" />
    加上runat="server"应该就行了 希望能解决楼主问题
      

  6.   

    5楼说的有道理!楼主,对应这种问题,你断点调试,很快就可以找到出问题的地方!
    还有,平常写代码,最好加上try{}catch(){},它能帮你捕获异常,快速定位问题出处
      

  7.   

     ++
    建议 一步一步调试下,找到null值根源,在解决
      

  8.   

    把你的<input id="Text1" type="text" /> 改成<input id="Text1" type="text" runat="server" />
    加上runat="server"应该就行了 希望能解决楼主问题
    这个应该可以吧