从视图调用控制器操作

本文关键字:操作 控制器 调用 视图 | 更新日期: 2023-09-27 18:22:36

我正试图使用onclick方法从控制器调用一个操作。出于某种原因,它没有返回我想要的操作,默认情况下总是跳到public ActionResult Index()

    <div class="form-group">
        <div class="col-md-offset-2 col-md-10">
            <input type="submit" value="Register" class="btn btn-default" onclick="location.href='@Url.Action("RegisterIndex", "Register")'"/>
        </div>
    </div>

注意

我已经使用模型自动创建了视图。它通过使用已经生成的javascript为我验证输入。如果我将输入标签更改为按钮,它将不会进行所需的验证。

从视图调用控制器操作

window.location.href执行GET请求,这就是为什么它没有将您的输入值传递给服务器。

当您在表单中有<input type="submit">时,单击它将提交包含所需所有数据的表单。我想这是你想要的,但你只想把它提交给另一个action

为了实现这一点,我建议采用以下解决方案:

  1. 在表单中创建一个hidden字段。其数据将发送到服务器
  2. 在服务器中,基于该hidden值,可以将redirect设置为适当的action

如果您发现任何不清楚的地方,请随时询问我:)

<input type="submit">在表单元素内时,将在单击时提交表单,除非返回false或event.preventDefault();

返回false将阻止提交的默认行为。

编辑

window.location.href将导致GET请求,因此不会使用此方法发布您的数据。

HTML

     @using (Html.BeginForm())
  {
      <div class="form-group">
        <div class="col-md-offset-2 col-md-10">
            <input type="submit"  id="btnSubmit" value="Register" class="btn btn-default"/>
        </div>
    </div>
  }

Javascript

  <script>
    $(document).ready(function () {
        $("#btnSubmit").click(function () { window.location.href = '@Url.Action("RegisterIndex", "Register")'; return false; });
    });
</script>