从视图中调用控制器操作

时间:2015-11-19 01:16:26

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

我正在尝试使用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>

注意

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

2 个答案:

答案 0 :(得分:3)

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

如果表单中包含<input type="submit">,则单击该表单将提交包含所需数据的表单。我认为这是你想要的,但你只是想让它提交给另一个action

为实现这一目标,我建议使用此解决方案:

  1. 在表单中创建一个hidden字段。它的数据将被发送到服务器。
  2. 在您的服务器中,根据hidden值,您redirect可以action
  3. 如果您发现任何不清楚的地方,请随时问我:)

答案 1 :(得分:1)

<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>