0

我看过其他关于此的帖子,但我无法让它工作。我已经尝试了一百万种不同的方法。我想要做的就是触发一些基于输入文本框和使用默认移动模板单击按钮的控制器动态生成的 javascript。我确定我做错了。我能得到的最远的是让javascript显示在页面上但不执行。

控制器

 [HttpPost]
    public ActionResult Index(FormCollection Form)
    {
        string injectedJS = "";
        if (! String.IsNullOrEmpty(Form["searchstring"]))
        {
           //create js
            ViewBag.injectedJS = //<created js>
            return View();
        }
        else
        {
            return View();
        }
    }

共享视图

@RenderSection("jsheader", required: false)

看法

@section jsheader{
 <script type="text/javascript">
     $(document).bind("pageinit", function () {
         @ViewBag.injectedJS;  
     });      
 </script>
                 }

@using (Html.BeginForm("Index", "mycontroller", FormMethod.Post))
{
<ul data-role="listview" data-inset="true">
    <li data-role="list-divider"></li>
    <li>             
             <input type="text" name="searchstring" id="searchbox" />
    </li>
</ul>

<input type="submit" id="searchbutton" autofocus="autofocus" value="Submit"                
}     
4

1 回答 1

0

Razor 视图会自动对您输出的任何数据进行编码。

您需要调用@Html.Raw(ViewBag.injectedJS)以防止它对 Javascript 进行 HTML 编码。

于 2013-01-11T17:14:51.043 回答