В моем файле index.cshtml у меня есть элемент бритвы (@ Html.EditorFor), который является текстовым полем. Javascript не распознает элемент. Если я изменил тип элемента на синтаксис без бритвы, тогда javascript сможет его увидеть. Я пропустил какой-то синтаксис здесь.document.getelementbyid не распознающий элемент бритвы
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. Если я использую бритву, то «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);
});
MVC-4 не поддерживает добавление HTML атрибутов в 'EditorFor() 'поэтому атрибут' id' не будет добавлен, а идентификатор будет по умолчанию, то есть 'id =" SearchQuery "' (используете ли вы MVC-4 или MVC-5.1 + или пользовательский 'EditorTemplate'?) –
Я использую MVC 5 – user1186050
Затем вы должны удалить тег MVC-4 и добавить правильный тег. –