C# 控制器中设置的变量值。如何在XAML.cs中获得它?

C# 控制器中设置的变量值。如何在XAML.cs中获得它?,c#,asp.net-mvc,silverlight,xaml,global-variables,C#,Asp.net Mvc,Silverlight,Xaml,Global Variables,我有一个MVC4应用程序。在获取数据库响应时,我将该响应中的一个特定值分配给一个静态变量(在“名称空间a”中声明)。在名称空间B中设置它,但在尝试在XAML.cs(比如名称空间C)中检索该值时,它总是返回0。 所有3个应用程序都在服务器上的同一应用程序池下运行。 我知道控制器总是可以将值传递到视图,从视图传递到Silverlight。因为它只是一个单一的值(“long”类型),所以我想探索一下是否有一种类似全局变量的方法,它的值在控制器级别设置并在XAML.cs中读取 我的CSHTML代码: &

我有一个MVC4应用程序。在获取数据库响应时,我将该响应中的一个特定值分配给一个静态变量(在“名称空间a”中声明)。在名称空间B中设置它,但在尝试在XAML.cs(比如名称空间C)中检索该值时,它总是返回0。
所有3个应用程序都在服务器上的同一应用程序池下运行。
我知道控制器总是可以将值传递到视图,从视图传递到Silverlight。因为它只是一个单一的值(“long”类型),所以我想探索一下是否有一种类似全局变量的方法,它的值在控制器级别设置并在XAML.cs中读取

我的CSHTML代码:

<object id="slvObject" data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="100%" height="800px"> 
        @{                     
            string sourceValue = @"/../../*.xap";                   
            string xappath = HttpContext.Current.Server.MapPath(@"") + @"\" + sourceValue;
            DateTime xapCreationDate = System.IO.File.GetLastWriteTime(xappath);
            sourceValue = sourceValue + "?ignore=" + xapCreationDate.ToString();                             
        }
        <param name="source" value="~/../../*.xap" />
        <param name="onError" value="onSilverlightError" />
        <param name="background" value="white" />
        <param name="windowless" value="true"/>
        <param name="minRuntimeVersion" value="5.0.60818.0" />
        <param name="initParams" value="@DataKeyNameConstants.val1=@val1,@DataKeyNameConstants.val2=@val2"/>
        <param name="autoUpgrade" value="true" />
        <a href="http://go.microsoft.com/fwlink/?LinkID=149156&v=5.0.60818.0" style="text-decoration:none">
            <img src="http://go.microsoft.com/fwlink/?LinkId=161376" alt="Get Microsoft Silverlight" style="border-style:none"/>
        </a>
private void method1()
        {
            string str = GetApplicationAbsoluteURL() + "/MyController/GetValue?val1=" + _val1.ToString() + "&val2=" + _val2.ToString();
            MyHelper.ReadDataAsynchronously(str, CompleteTask);
        }
控制器

public string GetValue(int val1, int val2)
{
    GetValueResponse _valueResponse = _serviceClient.GetValue(val1, val2);
//In this _valueResponse, I get a value Id "_valueResponse.Id" which is of long type.  I would like that value to be sent to XAML.cs (May be if it can be stored in a global variable and used there)
    return _valueResponse.XMLValue; 
}   
然后该控件进入我的XAML.cs文件的CompleteTask方法:

private void CompleteTask(object sender, OpenReadCompletedEventArgs e)
{
//Here is where I would like to read the value and it comes "0" all the time
}
还有一件事我想问。如果我们可以通过某种方式实现这一点,那么在长变量的每次赋值时,这个值是否总是会被刷新?(也就是说,我的问题是,由于.xap文件是预编译的,我不希望它记录一次值并一直使用它。我希望每次调用页面时都重新加载它,因为值可能会有所不同)


谢谢你的帮助

请记住,XAP文件在浏览器中运行,因此它位于与服务器端代码(控制器等)完全不同的域中

假设每次页面加载只需要加载一次值,那么方法是使用
initParams
在服务器端设置其值。只需扩展您已经在做的事情——将“val3”添加到
datakeynameconts
,设置
@val3=您的常量
,然后使用:

<param name="initParams" value="@DataKeyNameConstants.val1=@val1,@DataKeyNameConstants.val2=@val2,@DataKeyNameConstants.val3=@val3"/>

现在,您可以在Silverlight应用程序中的一个静态变量(
MyConstants
或其他任何变量)中使用它。

请记住,XAP文件在浏览器中运行,因此它位于与服务器端代码(控制器等)完全不同的域中

假设每次页面加载只需要加载一次值,那么方法是使用
initParams
在服务器端设置其值。只需扩展您已经在做的事情——将“val3”添加到
datakeynameconts
,设置
@val3=您的常量
,然后使用:

<param name="initParams" value="@DataKeyNameConstants.val1=@val1,@DataKeyNameConstants.val2=@val2,@DataKeyNameConstants.val3=@val3"/>
现在,您可以在Silverlight应用程序中的一个静态变量(
MyConstants
或其他任何变量)中使用它