我从中添加了一个脚本Latitude&纬度,并将其传递给textInput,然后我用ajax将它发布到控制器,这个" dynamic"文本输入在控制器端始终为空,并且在检查元素时具有值。
<script type="text/javascript">
function GetLocation() {
var geocoder = new google.maps.Geocoder();
var address = document.getElementById("txtAddress").value;
var labelvar = document.getElementById('sys');
geocoder.geocode({ 'address': address }, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
var latitude = results[0].geometry.location.lat();
var longitude = results[0].geometry.location.lng();
console.log("Latitude: " + latitude + "\nLongitude: " + longitude); //Ok.
labelvar.innerHTML = latitude + longitude; //Ok.
$.ajax({
url: 'Create',
type: 'POST',
data: $('#RestoForm').serialize(),
datetype: "html",
success: function(data) {
$('#RestoForm').html(data);
}
});
error: function e(xhr, ajaxOptions, thrownError) {
alert(xhr.status);
alert(thrownError);
}
}
});
};
</script>
[Authorize]
public ActionResult Create()
{
var viewModel = new LectureFormViewModel
{
Genres = _context.Genres.ToList(),
};
return View("TGigform", viewModel);
}
[Authorize, HttpPost, ValidateAntiForgeryToken]
public ActionResult Create(LectureFormViewModel viewModel)
{
try
{
if (!ModelState.IsValid)
{
viewModel.Genres = _context.Genres.ToList();
return View("TGigform", viewModel);
}
var lectureGig = new LectureGig
{
LatLong = viewModel.LatLong,
};
@using (Html.BeginForm("Create", "TMaps", FormMethod.Post, new {enctype = "multipart/form-data", id = "RestoForm"}))
{
@Html.LabelFor(m => m.LatLong)
@Html.TextBoxFor(m => m.LatLong, new {@id = "sys"})
<input type="button" class="btn btn-primary btn-lg" onclick="GetLocation()" value="Finish"/>
}
除了labelvar
之外的所有其他值都很好并且到达控制器。
感谢
答案 0 :(得分:2)
假设labelvar
是input
元素,您需要设置其value
,而不是innerHTML
。试试这个:
labelvar.value = latitude + longitude;