【问题标题】:Capture URL Before Form Post在表单发布之前捕获 URL
【发布时间】:2019-06-17 15:37:12
【问题描述】:

我正在尝试捕获页面加载时提交的 URL。当页面加载时,它会附加提供的参数,以提供我需要保存的信息。问题是当我让用户填写表单字段并提交时,URL 包含处理程序方法。显而易见的是,我需要在提交表单之前捕获 URL。我对 Razor 不够熟悉,无法了解是否有事件在加载时触发,或者如何完成此操作。有没有像页面加载事件这样简单的东西?谢谢!

1) 开头为:https://localhost:44384/sign 2) 在提交时采用处理程序名称:https://localhost:44384/Sign?handler=SubmitAndRedirect

      <form method="post">
          First name:<br>
          <input type="text" name="firstname" autocomplete="on" maxlength="10" required><br>
          Last name:<br>
          <input type="text" name="lastname" autocomplete="on" maxlength="10" required><br>
          Employee number:<br>
          <input type="text" name="empnum" maxlength="10">
          <br>
          <br>I agree to the terms above:<br>
          <input type="checkbox" name="check" required>
          <button type="submit"  asp-page-handler="SubmitAndRedirect">Submit and Redirect</button>
      </form>
public ActionResult OnPostSubmitAndRedirect()
{

    //Capture Form Data and Push to SQL DB
    var firstname = Request.Form["firstname"];
    var lastname = Request.Form["lastname"];
    var empnum = Request.Form["empnum"];

    bool isValidUser = ValidateUser(empnum, lastname);

    if (isValidUser == true)
    {
        WriteToDB(firstname, lastname, empnum, url);
        return Redirect(hardcoded);
    }
    else
    {
        return Redirect("/sign");
    }

}

【问题讨论】:

  • 哪里需要用到handler查询参数的值?
  • @Justin Turner - 我想你真正想问的是(如何检测请求是否是回发)[stackoverflow.com/questions/47820332/…
  • @gunr2171 我根本不需要使用 handler 参数的值。在用户点击提交 btn 收集相关信息之前,我需要 URL 的参数值。该页面是一个初始屏幕,具有基本形式,用于收集有关连接到公共 wifi 的用户的信息。该页面的前缀为 http:server/node_id=0000000&node_mac=00:00:0a:00:00:00&gateway_id=292928&client_ip=100.00.00 我想获取这些参数。提交表单后,url 显然会发生变化。
  • 谢谢大家。我能够解决在 C# 端添加属性的问题,然后通过在段落标记中设置表单外部的属性来在提交表单之前捕获请求。 &lt;p&gt; @{ var QS = Request.QueryString.Value; JT.query = QS; } @*&lt;h1&gt; @JT.query&lt;/h1&gt;*@ &lt;/p&gt;

标签: c# asp.net asp.net-mvc razor


【解决方案1】:

MVC 的模型绑定功能可能正是您想要的。看看this article

查看它如何使用EmployeeViewModel 类以及如何将表单发布到操作中。

据我所知,MVC 中没有protected void Page_Load(object sender, EventArgs e),就像在 Web 表单中一样。

还可以查看jQuery's submit handler。也许这可以让您捕获一些信息并在提交之前对其进行处理。

【讨论】:

    【解决方案2】:

    谢谢大家。我能够解决在 C# 端添加属性的问题,然后在提交表单之前捕获请求,方法是使用段落标记之间的内联代码设置表单外部的属性。

    <p>
        @{
            var QS = Request.QueryString.Value;
            JT.query = QS;
         }
        @*<h1> @JT.query</h1>*@
    </p>
    

    【讨论】:

      猜你喜欢
      • 2012-10-30
      • 2015-10-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-09
      • 1970-01-01
      • 2012-02-20
      • 1970-01-01
      相关资源
      最近更新 更多