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 に答える