如何让我的JavaScript在asp.net cshtml文件中工作?

时间:2017-06-03 13:28:39

标签: javascript c# asp.net asp.net-mvc razor

我有一个html输入用于将图片上传到我的ftp,我希望我的JS检测到我的按钮上的更改。 我的cshtml是:

    @using (Html.BeginForm("UploadFile", "Upload", FormMethod.Post, new { 
    enctype = "multipart/form-data" }))
    {

    <input id="uploadFile" placeholder="No file..." disabled="disabled" />
    <div class="fileUpload btn btn-primary">
        <span>Browse</span>
        <input id="uploadBtn" type="file" class="upload" />
    </div>
    <input type="submit" title="OK" />
} 

我的脚本是

<head>
<script type="text/javascript" language="javascript">
        document.getElementById("uploadBtn").onchange = function ()
        {
            document.getElementById("uploadFile").value = this.value;
        };
    </script>
</head>

当我运行我的代码时,我收到以下消息:

  

0x800a138f - JavaScript运行时错误:无法获取属性&#39; onchange&#39;未定义或空引用

我用小提琴检查了我的HTML和JS,一切都很好,所以我猜Razor和JS彼此有一些问题。 有小费吗?

1 个答案:

答案 0 :(得分:1)

试试这个:

1

</body>
  1. 根据@StephenMuecke :将您的脚本移至关闭<body> .............. .............标记之前(我认为这是最佳方式)

    <script type="text/javascript" language="javascript"> $(document).ready(function(){ $('#uploadBtn').on('change', function() { $("#uploadFile").val($(this).val()); }) }); </script>

    </body>

    .js

  2. 3.如果您使用单独的脚本( $(document).on('change','#uploadBtn' ,function() { $("#uploadFile").val($(this).val()); }); 文件),请尝试

    public static boolean isBalanced(String s) {
        Deque<Character> stack = new LinkedList<>();
        for (int i = 0; i < s.length(); ++i) {
            char c = s.charAt(i);
            switch (c) {
            case '(': stack.push(')'); break;
            case '[': stack.push(']'); break;
            case '{': stack.push('}'); break;
            case ')': case ']': case '}':
                if (stack.isEmpty() || !stack.pop().equals(c))
                    return false;
                break;
            }
        }
        return stack.isEmpty();
    }