2015-11-19 167 views
1

我正在尝试使用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来验证输入。如果我将输入标签更改为按钮,则不会执行所需的验证。

+0

随时问我你有这种形式里面? – Moe

+0

@Moe是的,它是在一个窗体。 –

回答

3

window.location.href做了GET要求,这就是为什么它没有通过您的输入值到服务器。

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

要做到这一点,我建议这个解决方案:

  1. 形式创建hidden场。它的数据将被发送到服务器。
  2. 在你的服务器上,基础上hidden值,可以redirect到相应的action

请,如果你发现什么不清楚的地方:)

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

现在它调用我想要的ActionResult,但它不验证输入,也没有将输入值传递给null。 –

+0

使用提交时您将需要返回false。答案已经更新 – Moe

+0

你能告诉我什么是'家/关于'吗? –

相关问题