0

我的视图有一个文本框,用于捕获用户的扫描。然后,扫描将在没有任何进一步用户操作的情况下传递给另一个操作,然后该操作将使用扫描的数据来完成交易。到目前为止,文本框被扫描填充并立即重定向,但没有文本框的内容。这就是我所拥有的;

看法:

<input id="thisText" class="largetext" name="txtScanLabel"  onkeyup="myKeyUp" />

和:

  <script type="text/javascript">
   var tResults = "Test";

       $(function () {
           $('input.largetext').focus();
       });

       $(function () {
           $("#thisText").keyup(myKeyUp);
       });

       function myKeyUp(eventInstance) {
           var myURL = '@Url.Action("ScanResults", "Home")';
           window.location.href = myURL + '?tResults' + encodeURIComponent(tResults);
       }

   </script>

控制器:

    public ActionResult ScanResults(string tResults)
    {

        var test = tResults;                     

        return RedirectToAction("Success");

    }
4

3 回答 3

2

您已经使用 jQuery 悄悄地订阅了.keyup事件处理程序,但您已经onkeyup在 DOM 中使用了该属性。你不需要做这两件事。使用 jQuery 就足够了。所以从清理你的标记开始:

<input id="thisText" class="largetext" name="txtScanLabel" />

此外,您已将tResults值硬编码到Test您的 javascript 中。而不是使用全局变量中的这个硬编码值(你可以摆脱它),你应该从文本框中读取值:

function myKeyUp(eventInstance) {
    var myURL = '@Url.Action("ScanResults", "Home")';
    var value = $(this).val();
    window.location.href = myURL + '?tResults=' + encodeURIComponent(value);
}

请注意,当用户在输入字段中键入内容时, usingwindow.location.href将立即重定向到控制器操作。ScanResults您可能想使用 AJAX:

function myKeyUp(eventInstance) {
    var myURL = '@Url.Action("ScanResults", "Home")';
    $.ajax({
        url: myURL,
        type: 'POST',
        data: { tResults: $(this).val() },
        success: function(result) {
            // do something with the result returned by the controller action
        }
    });
}
于 2012-06-11T19:17:19.733 回答
0

您尚未在控制器操作中包含 [HttpPost] 属性。

于 2012-06-11T19:19:34.427 回答
0

你可能需要这个,因为你的“测试不会像现在这样工作:

       window.location.href = myURL + '?tResults' + encodeURIComponent(tResults); 

改成

       tResults = $('#thisText').val();
       window.location.href = myURL + '?tResults=' + encodeURIComponent(tResults); 

不要忘记那里重要的等号。

于 2012-06-11T19:30:35.140 回答