从ASP MVC控制器到Silverlight文本框的值

时间:2011-04-16 04:53:27

标签: asp.net asp.net-mvc-2 silverlight-3.0

有没有办法将单个字符串值从ASP MVC控制器传递给silverlight文本框?

1 个答案:

答案 0 :(得分:0)

您可以按如下方式编写脚本类型:

[ScriptableType]
public partial class MainPage : UserControl
{

    public MainPage()
    {
        InitializeComponent();

        HtmlPage.RegisterScriptableObject("MainPage", this);
    }

    [ScriptableMember]
    public string Text
    {
        get { return TextBox1.Text; }
        set { TextBox1.Text = value; }
    }

}

现在您可以访问MainPage.Text属性。

<script type="text/javascript">
    Silverlight.createObjectEx({
        source: '/clientbin/journal.web.administration.xap',
        parentElement: document.getElementById('SilverlightPlaceHolder'),
        id: 'SilverlightPlugin',
        properties: {
            version: '4.0.60129.0'
        },
        events: {
            onLoad: function () {
                var host = document.getElementById('SilverlightPlugin');
                if (host != null)
                    host.content.MainPage.set_Text('@ViewBag.Text');
            }
        }
    });
</script>

最后从这样的动作中返回字符串:

public ActionResult Index()
{
    ViewBag.Text = "Some Text";

    return View("Index");
}

更新:如果您使用的是ASP.NET MVC 2,则必须将ViewBag.Text更改为ViewData [“Text”]并在标记中更改@ViewBag.Text<%: ViewData["Text"] %>