对Html.Beginform没有任何操作

时间:2014-06-24 10:52:38

标签: c# asp.net-mvc asp.net-mvc-5 html-helper

我对正在开发的应用程序的部分视图有@using (Html.BeginForm())。我在页面上有一个文本框,在输入文本框后单击输入按钮,它正在提交表单。无论如何,我可以告诉MVC不要在BeginForm Helper中执行任何操作吗?

我尝试传递@using (Html.BeginForm(null)),但结果相同。我意识到我可能会拿出Html.BeginForm并且只是使用标签并且javascript为提交操作返回false但是我想知道是否可以用html.beginform实现这种行为?

更新 - 显示部分视图

<div class="row">
    <div class="col-xs-12 h-form no-padding">
        @using (Html.BeginForm(null))
        {
            @Html.AntiForgeryToken()
            <p>
                <div>

                    <input id="txtSearch" type="text" placeholder="Search...">
                </div>
            </p>
        }
    </div>
</div>

更新II 好像只有一个文本字段存在并且点击输入表单是在POST操作上提交的。如果我在页面上放置2个文本字段,则会调用任何一个POST操作。

无论如何,我要删除Html.BeginForm()并使用<form onsubmit="return false">

3 个答案:

答案 0 :(得分:2)

如果您想要在单击“提交”按钮时表单未提交。提交按钮类型必须为按钮

<input **type="button"** value="Create" onclick="ajaxSubmit();" />

答案 1 :(得分:1)

要在文本框中输入时禁用发布表单,请添加以下jquery函数:

$(function() {
    $(':text').bind('keydown', function(e) { // on keydown event for all textboxes
        if(e.keyCode == 13) { // if key pressed it enter
            e.preventDefault();
            return false;
        } else {
            return true;
        }
    }
});

答案 2 :(得分:0)

你可以使用

using (Ajax.BeginForm())
    {
        @Html.AntiForgeryToken()
        <p>
            <div>

                <input id="txtSearch" type="text" placeholder="Search...">
            </div>
        </p>
    }

然后可以执行任务。

或尝试

using (Html.BeginForm("", "", FormMethod.Get))
    {
        @Html.AntiForgeryToken()
        <p>
            <div>

                <input id="txtSearch" type="text" placeholder="Search...">
            </div>
        </p>
    }