等待2个Javascript函数和2个C#函数?

等待2个Javascript函数和2个C#函数?,javascript,c#,jquery,asp.net,asp.net-core,Javascript,C#,Jquery,Asp.net,Asp.net Core,我有一个用ASP.NET核心MVC制作的Web应用程序。我有两个JavaScript函数和两个C#函数,它们应该一行执行 我需要做的是: 单击按钮>弹出表单>填写值>将值发送回控制器中的方法>在同一控制器的另一个方法中使用该值>将值附加到所有行 我想做的过程是: 有1个按钮>点击按钮调用2个JavaScript函数>首先运行SetDate函数,然后运行AppendDate>将SetDate函数组合成一种形式,该形式在局部视图中>,在继续执行AppendDate函数之前,必须先完成第一个函数(由于

我有一个用ASP.NET核心MVC制作的Web应用程序。我有两个JavaScript函数和两个C#函数,它们应该一行执行

我需要做的是:

单击按钮>弹出表单>填写值>将值发送回控制器中的方法>在同一控制器的另一个方法中使用该值>将值附加到所有行

我想做的过程是:

有1个按钮>点击按钮调用2个JavaScript函数>首先运行SetDate函数,然后运行AppendDate>将SetDate函数组合成一种形式,该形式在局部视图中>,在继续执行AppendDate函数之前,必须先完成第一个函数(由于表单还将调用一个从表单中获取结果的C#函数)>那么另一个C#函数必须由第二个“onclick”事件运行

HTML表单代码如下:

@model IEnumerable<application.Models.Moederblad>

<div id="element_to_pop_up">
    <a class="b-close">x</a>
    @using (Html.BeginForm("Incassodatum", "Moederblads", FormMethod.Post, new { id = "dateForm" }))
    {
        <br />
        <div class="row">
            <div class="col-md-6">
                <label for="Incassodatum">Incassodatum</label>
                <input class="form-control" placeholder="Bijvoorbeeld: 19-02-2020" type="text" data-val="true" data-val-regex="Dat is geen geldige datum" data-val-regex-pattern="^(0[1-9]|[12][0-9]|3[01])[/](0[1-9]|1[012])[/](19|20)[0-9]{2}$, " id="Incassodatum" name="Incassodatum">
            </div>
        </div>
        <div class="row">
        </div>
        <br>
        <input name="__RequestVerificationToken" type="submit" class="btn btn-primary submit" value="Toevoegen" id="submit">
    }
</div>
然后是从表单中获取值的C#方法(此方法已确认有效)

然后是第二个C#方法,它从上述方法中获取值,并为所有行设置值

     [HttpPost, ValidateAntiForgeryToken]
    public IActionResult AppendDateToIncassoDatum([Bind("<All model properties>")]Moederblad moederblad)
    {
        if (ModelState.IsValid && TempData["Incassodatum"] != null)
        {
            //Datum van vandaag in juiste formaat pakken en in een variabele stoppen
            var datum = TempData["Incassodatum"].ToString();
            if (datum == null)
            {
                return View("Error");
            }

            //Model content ophalen
            var model = _context.Moederblad.ToList();

            //We gebruiken hier een foreach statement omdat we elke rij willen updaten
            foreach (var entry in model)
            {
                //Hier check je of de gehele string van Incasso datum niet al een string heeft met de datum van vandaag, zoja breekt hij de operatie af
                //zo niet, gaat ie door en vult hij de datum aan.
                if (entry.Incassodatum.Contains(datum))
                {
                    return View("Error-BA");
                }
                else
                {
                    entry.Incassodatum += ", " + datum;
                }
            }
            //opslaan van de geupdate gegevens
            _context.SaveChanges();

            if (datum != null)
            {
                return View("Success");
            }
            else
            {
                return View("Error");
            }
        }
        //Mocht het opslaan misgaan, stuur door naar de error page
        else
        {
            return View("Error");
        }
    }
[HttpPost,ValidateAntiForgeryToken]
public IActionResult AppenddateToIncassodatam([Bind(“”)Moederblad Moederblad)
{
if(ModelState.IsValid&&TempData[“Incassodatum”]!=null)
{
//瓦里贝勒-斯托彭省帕克肯县juiste Format van vandaag基准面
var-datum=TempData[“incassodatam”].ToString();
如果(基准==null)
{
返回视图(“错误”);
}
//模型含量
var model=_context.Moederblad.ToList();
//我们希望每个声明都能更新
foreach(模型中的var条目)
{
//检查所有管柱是否符合标准,是否符合操作要求
//zo niet,我的门在基准面上。
if(条目包含(基准))
{
返回视图(“错误BA”);
}
其他的
{
输入。输入坐标+=“,”+基准;
}
}
//奥普斯兰·范德格文斯
_SaveChanges();
如果(基准面!=null)
{
返回视图(“成功”);
}
其他的
{
返回视图(“错误”);
}
}
//莫赫特·奥普斯兰·米斯甘,错误页
其他的
{
返回视图(“错误”);
}
}
但现在发生的事情是,当我点击按钮时,表单加载完成后,它直接启动第二个Javascript函数,表单在该点上甚至没有值。第二个Javascript函数然后运行C#函数并重定向我,但没有结果。它应该在第一个C#方法有值时运行从表格上看。有人知道怎么做吗?卡了3天了


提前感谢!

这是正确的流程。您将自己与在一个按钮上使用两个事件相混淆。 让我们逐步了解您拥有的JS流:

  • 加载页面后,启动$(document).ready函数
  • 在这个函数的末尾,您将显式调用AppendDate();函数
  • AppendDate()函数将做什么?它调用第一个函数SetDate(),该函数将onclick hadnler绑定到id=AppendDateToInCasoDatum的按钮。然后返回run back to AppendDate(),该函数将向id=AppendDateToInCasoDatum的同一按钮添加另一个one处理程序
  • 因此,当页面加载时,按钮上会出现两次单击事件。当您按下此按钮时,所有这两个事件都会逐个触发:第一次onr-将显示弹出窗口,第二次-将重定向到定义的位置。这两个事件之间不会有暂停

  • 嗯,您试图推动的流程有问题。重定向应该绑定到其他控件,这就是正确的流程。您已经将自己与在一个按钮上使用两个事件混淆了。 让我们逐步了解您拥有的JS流:

  • 加载页面后,启动$(document).ready函数
  • 在这个函数的末尾,您将显式调用AppendDate();函数
  • AppendDate()函数将做什么?它调用第一个函数SetDate(),该函数将onclick hadnler绑定到id=AppendDateToInCasoDatum的按钮。然后返回run back to AppendDate(),该函数将向id=AppendDateToInCasoDatum的同一按钮添加另一个one处理程序
  • 因此,当页面加载时,按钮上会出现两次单击事件。当您按下此按钮时,所有这两个事件都会逐个触发:第一次onr-将显示弹出窗口,第二次-将重定向到定义的位置。这两个事件之间不会有暂停

  • 嗯,您试图推动的流程有问题。重定向应该绑定到其他控件,以分解您的流程:

  • 单击按钮-内置客户端功能

  • 表单弹出-附加到按钮点击事件的JS事件处理程序操纵DOM。只需基本JS

  • 填写值-用户操作

  • 将值发送回controller-AJAX请求中的方法,仍然非常基本

  • 在同一控制器的另一个方法中使用该值-控制器操作可以调用任意多的其他方法或任何它需要的方法。唯一重要的是最终返回的响应

  • 将值附加到所有行。-只是AJAX请求上的成功回调。大概,您将返回类似JSON的内容。然后,您将使用该对象中的数据执行某种DOM操作。基本JS内容

  • 简言之,这里有
        public IActionResult Incassodatum(string Incassodatum)
        {
            string date= "";
            if (ModelState.IsValid)
            {
                date = Incassodatum;
            }
            else
            {
                date = "Daar ging wat mis";
            }
            TempData["Incassodatum"] = $"{Incassodatum}";
            return null; 
        }
    
         [HttpPost, ValidateAntiForgeryToken]
        public IActionResult AppendDateToIncassoDatum([Bind("<All model properties>")]Moederblad moederblad)
        {
            if (ModelState.IsValid && TempData["Incassodatum"] != null)
            {
                //Datum van vandaag in juiste formaat pakken en in een variabele stoppen
                var datum = TempData["Incassodatum"].ToString();
                if (datum == null)
                {
                    return View("Error");
                }
    
                //Model content ophalen
                var model = _context.Moederblad.ToList();
    
                //We gebruiken hier een foreach statement omdat we elke rij willen updaten
                foreach (var entry in model)
                {
                    //Hier check je of de gehele string van Incasso datum niet al een string heeft met de datum van vandaag, zoja breekt hij de operatie af
                    //zo niet, gaat ie door en vult hij de datum aan.
                    if (entry.Incassodatum.Contains(datum))
                    {
                        return View("Error-BA");
                    }
                    else
                    {
                        entry.Incassodatum += ", " + datum;
                    }
                }
                //opslaan van de geupdate gegevens
                _context.SaveChanges();
    
                if (datum != null)
                {
                    return View("Success");
                }
                else
                {
                    return View("Error");
                }
            }
            //Mocht het opslaan misgaan, stuur door naar de error page
            else
            {
                return View("Error");
            }
        }