Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将变量从视图中的javascript函数传递到ASP.NET内核中控制器中的操作_Javascript_Html_Asp.net_Asp.net Mvc_Model View Controller - Fatal编程技术网

如何将变量从视图中的javascript函数传递到ASP.NET内核中控制器中的操作

如何将变量从视图中的javascript函数传递到ASP.NET内核中控制器中的操作,javascript,html,asp.net,asp.net-mvc,model-view-controller,Javascript,Html,Asp.net,Asp.net Mvc,Model View Controller,我已在控制器类中设置创建操作- public async Task<IActionResult> Create([Bind("Id,Title,Post,YoutubeURL")] Announcement announcement) { if (ModelState.IsValid) { string currentUserId = _userManager.GetUserId(User); A

我已在控制器类中设置创建操作-

public async Task<IActionResult> Create([Bind("Id,Title,Post,YoutubeURL")] Announcement announcement)
    {
        if (ModelState.IsValid)
        {
            string currentUserId = _userManager.GetUserId(User);
            ApplicationUser currentUser = _context.Users.FirstOrDefault
                (x => x.Id == currentUserId);
            announcement.User = currentUser;

            //UserName is also set to allow for easier access of username from the index view
            string currentUserName = _userManager.GetUserName(User);
            announcement.UserName = currentUserName;

            DateTime date = DateTime.Now;
            announcement.Date = date;

            announcement.Views = 0;

            _context.Add(announcement);
            await _context.SaveChangesAsync();
            return RedirectToAction(nameof(Index));
        }
        return View(announcement);
    }
公共异步任务创建([Bind(“Id,Title,Post,YoutubeURL”)]公告)
{
if(ModelState.IsValid)
{
字符串currentUserId=\u userManager.GetUserId(用户);
ApplicationUser currentUser=\u context.Users.FirstOrDefault
(x=>x.Id==currentUserId);
announcement.User=当前用户;
//用户名还设置为允许从索引视图更轻松地访问用户名
字符串currentUserName=\u userManager.GetUserName(用户);
announcement.UserName=当前用户名;
DateTime date=DateTime.Now;
公告日期=日期;
公告.视图=0;
_添加(公告);
wait_context.SaveChangesAsync();
返回重定向到操作(名称(索引));
}
返回视图(公告);
}
然后,我使用此表单从视图中的用户处获取所需的数据

<form asp-action="Create" id="createForm">
        <div asp-validation-summary="ModelOnly" class="text-danger"></div>
        <div class="form-group">
            <label asp-for="Title" class="control-label"></label>
            <input asp-for="Title" class="form-control" id="titleText" />
            <span asp-validation-for="Title" class="text-danger"></span>
        </div>
        <div class="form-group">
            <label asp-for="Post" class="control-label"></label>
            <input asp-for="Post" class="form-control input-lg" id="postText" />
            <span asp-validation-for="Post" class="text-danger"></span>
        </div>
        <div class="form-group">
            <label asp-for="YoutubeURL" class="control-label"></label>
            <input asp-for="YoutubeURL" class="form-control input-lg" id="youtubeText" />
            <span asp-validation-for="Post" class="text-danger"></span>
        </div>
        <div class="form-group">
            <a asp-action="Index" class="btn btn-default">Cancel</a>
            <button type="button" id="submitBtn" class="btn btn-primary">Create</button>
        </div>
    </form>

取消
创造
现在我想使用这个javascript函数获取用户的地理位置,并将其发送到“Create”-


window.onload=geoFindMe();
函数geoFindMe(){
var输出=document.getElementById(“coords”);
如果(!navigator.geolocation){
output.innerHTML=“您的浏览器不支持地理位置”

”; 返回; } 功能成功(职位){ 变量纬度=位置坐标纬度; var经度=position.coords.longitude; output.innerHTML='纬度为'+Latitude+'''”
经度为'+Latitude+'''”

; } 函数错误(){ output.innerHTML=“无法检索您的位置”; } output.innerHTML=“定位…

”; navigator.geolocation.getCurrentPosition(成功,错误); }


一切正常,但我无法完成最后一步,如何将纬度和经度变量发送到控制器中的“创建”操作,以便我能够创建包含这些变量的模型?

对于希望执行类似操作的任何人,我的解决方案如下所示-

我为经度和纬度创建了两个新的隐藏表单输入-

            <input asp-for="longitude" type="hidden" class="form-control input-lg" id="longID" />
            <input asp-for="latitude" type="hidden" class="form-control input-lg" id="latID" />

你研究过Ajax吗?你的
Create
操作甚至没有使用纬度和经度属性。我还没有添加long/lat属性,因为我第一次想知道如何从javascript函数中包含long/lat变量。我没有研究过Ajax,这个问题值得研究吗?您需要从这个问题开始,堆栈溢出不是一个代码编写服务。
            <input asp-for="longitude" type="hidden" class="form-control input-lg" id="longID" />
            <input asp-for="latitude" type="hidden" class="form-control input-lg" id="latID" />
window.onload = getGeoLocation();
function getGeoLocation() {
    if(navigator.geolocation) {
        navigator.geolocation.getCurrentPosition(useLocation);
    }
};

function useLocation(position) {
    document.getElementById('longID').value = position.coords.longitude;
    document.getElementById('latID').value = position.coords.latitude;
};