快速搜索表单未提交MVC

时间:2014-10-07 09:11:38

标签: asp.net-mvc forms search submit

我目前有部分视图呈现在网站上每个页面的顶部。这个局部视图的要点是提供一个允许用户快速搜索的表单。我已将部分视图表格设置如下:

    @using (Html.BeginForm())
            {
                <div class="col-md-7" style="text-align: right">                          
                    <div class="input-group input-group-sm col-sm-6 pull-right">
                        @Html.TextBox("caseReference")
                        <button type="submit">
                            <i class="fa fa-search"></i>
                        </button>
                    </div>
                </div>   
            }
            @Html.Partial("_MainNavigation")
        </div>
    </div>
</nav>

<script type="text/javascript">
    $(function () {
        $("form").on("submit", function (event) {
            event.preventDefault();
            var request = { caseReference: $('#caseReference').val() };
            submitForm(request, '@Url.Action("CaseSearch", "QuickSearch", new { area = "Search" })');
        });
    });

</script>

然而,在页面源下,表单操作呈现为具有后期操作的主页的请求。我已经阅读了很多例子,这个任务看起来非常简单。在@html.BeginForm()方法上使用参数会更好吗?

1 个答案:

答案 0 :(得分:0)

因此,经过几个小时的研究,我终于获得了快速搜索功能,可以在我的网站主页上工作。在razorview中,我有以下代码:

<div class="input-group input-group-sm col-sm-6 pull-right">
                @Html.Kendo().MaskedTextBox().Name("name").Mask("000000/0000").Deferred()
                <button id="search" type="submit">
                    <i class="fa fa-search"></i>
                </button>

<script type="text/javascript">
$(function () {
    $("#search").on("click", function (event) {
        event.preventDefault();
        var value = $('#name').val();
        value = value.replace(/[/]/g, "_");
        var refVal = value;
        var url = '@Url.Action("Action", "Contoller", new { area = "Area" })' + '//' + refVal;
        $.ajax({
            type: 'GET',
            url: url,
            cache: false,
            dataType: 'json',
            contentType: "application/json;",
            success: function (result) {
                if (result.success) {
                    window.location.href = result.url;
                }
                else {
                    bootbox.alert(result.message);
                }
            }
        });
    });
});

但是关于以下一行:

        var url = '@Url.Action("Action", "Contoller", new { area = "Area" })' + '//' + refVal;

如果我对网址进行硬编码并附加搜索字词,则它在主页上工作,因为我们位于根目录但是从其他网页失败,为了解决这个问题,我尝试使用@ Url.Action。但是这会在html源代码中产生以下结果:

        var url = '' + '//' + refVal;

是否有某种方法可以使用带有JS的URL.Action方法?

相关问题