javascript - document.getelementbyid 无法识别 Razor 元素

标签 javascript asp.net-mvc razor asp.net-mvc-5

在我的index.cshtml 文件中,我有一个 razor 元素 (@Html.EditorFor),它是一个文本框。 JavaScript 无法识别该元素。如果我将元素类型更改为非 Razor 语法,则 javascript 可以看到它。我在这里缺少一些语法吗?

index.cshtml

<div class="jumbotron">
<h1>my application</h1>
@using (Html.BeginForm("Results", "Home", FormMethod.Post))
{
    <div class="form-group">
        //javascript can't see mainpagequery
        @Html.EditorFor(model => model.SearchQuery, new { htmlAttributes = new { @class = "form-control", id = "mainpagequery" }})
        @Html.ValidationMessageFor(model => model.SearchQuery, "", new { @class = "text-danger" })
        //javascript can see mainpagequery in the non razor element here
        <input type="text" class="form-control" placeholder="Search" id="mainpagequery">
    </div>
    <button type="submit" class="btn btn-default">Search</button>
}

这是我的 JavaScript。如果我使用 razor,那么“mainpagequery”会带有下划线,因为它看不到它,如果我使用 html,那就没问题。我知道我正在使用 JavaScript,因为我看到弹出警报消息。

$(document).ready(function () {
console.log("ready!");
alert("mainpage autocomplete function entered");

var input = document.getElementById('mainpagequery');
var options = {
    types: ['(cities)'],
    componentRestrictions: { country: "us" }
};
var mainpagequery = new window.google.maps.places.Autocomplete(input, options);
});

最佳答案

如果是 @Html.EditorFor,您的 id 会被覆盖为模型的属性名称。

如果你使用 f12 查找元素,你会发现它如下。 (通知 ID“SearchQuery124”我刚刚将其重命名为某个名称)

enter image description here

所以在你的情况下进行更改,例如

$(document).ready(function () {
    console.log("ready!");
    alert("mainpage autocomplete function entered");

    var input = document.getElementById('SearchQuery').value;
    console.log(input);
    var options = {
        types: ['(cities)'],
        componentRestrictions: { country: "us" }
    };
    var mainpagequery = new window.google.maps.places.Autocomplete(input, options);
});

关于javascript - document.getelementbyid 无法识别 Razor 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28620454/

相关文章:

javascript window.open 不必要的顶部填充

c# - 将 IPagedList 与复选框绑定(bind)为列表

c# - 如何使用@Ko.Html.Button 将模型属性值发送到 K-MVC 中的 Controller 方法

javascript - 具有到期时间的 Google Cloud Storage ACL

JavaScript 返回语句意外

javascript - 如何检查多个相等语句?

asp.net-mvc - MVC RememberMe 验证故障

asp.net-mvc - Elmah.MVC 在 IIS Express 下工作,但不能在 IIS 7.5 下工作

c# - bool 的 MVC 4 自定义模板( Razor )

asp.net-mvc - ASP.net MVC 4 从数据库加载菜单到局部 View