剃刀输入有两个动作

时间:2015-06-04 21:30:51

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

我有一个简单的提交输入:

@using (Html.BeginForm())
{
      <input type="submit" value="Save" id="SaveButton" class="btn" />
}

现在我想让这个按钮也成为一个热门链接。当我点击它时,我想转到“X”动作。

我尝试过:

onclick="location.href='@Url.Action("Index", "Student")'"

但它只提交更改,并刷新实际页面。 如果输入在@using(...)之外,则重定向有效,但这当然对我没有帮助。

1 个答案:

答案 0 :(得分:1)

我要做的是使用JavaScript提交表单:

在表单声明中添加一个onsubmit事件处理程序

@using (Html.BeginForm("Index", "Home", FormMethod.Post, new
{       
    onsubmit = "javascript:onFormSubmit(this); return false;"
}))
{
    <!-- your form -->
} 

然后onsunmit javascript函数提交如下表单:

function onFormSubmit(form)
{
    var data = new FormData($(form)[0]);
    if ($(form).valid())
    {
            $.ajax({
                url:  $(form).attr('action'),
                cache: false,
                processData: false,
                contentType: false,
                data: data,
                type: 'POST',
                error: function(jqXHR, textStatus, errorThrown)
                {
                    throw new Error('Cannot get action');
                }
            }).done(function(view)
            {
                // redirect here....
            });
        }
}

如果您不想这样做,请在您的“索引操作”中而不是返回“视图”执行此操作:

return Redirect("http://www.google.com");// or any url you want

另一种方法是重定向到不同的Action,如下所示:

return RedirectToAction("RedirectAction");

然后在控制器中添加另一个名为&#34; RedirectAction&#34;。

的操作
public ActionResult RedirectAction()
{
   // Do some stuff
    return Redirect("http://www.google.com");// or any url you want
}

希望这有帮助。