在表单发布之前捕获URL

时间:2019-06-17 15:37:12

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

我正在尝试捕获页面加载时提交的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");
    }

}

2 个答案:

答案 0 :(得分:0)

您正在寻找MVC的模型绑定功能。看看this article

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

在MVC中,没有protected void Page_Load(object sender, EventArgs e)像我所知道的Web窗体中那样。

也请检出jQuery's submit handler。也许这可以使您在提交之前捕获一些信息并进行处理。

答案 1 :(得分:0)

谢谢。我能够解决在C#端添加属性,然后通过使用段落标签之间的内联代码在表单外部设置属性来捕获提交表单之前的请求。

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