一个服务器和一个客户端表单在同一页面上

时间:2012-06-29 16:03:15

标签: c# asp.net razor

我在asp.net页面上有两个表单。一个是整体表单标记,runat="server",另一个是简单表单,其中一个输入用于搜索。 表格本身:

<form method="post" id="searchForm">
  <input type="text" id="searchstring" class="search-box" name="searchstring"
    value="Search..." />
</form>

用于检查回发的Razor脚本:

@{
  bool isPostBack = !String.IsNullOrEmpty(Request.Form["searchstring"]);
  var original_value = "Search...";
  if(isPostBack)
  {
   Response.Redirect("/SearchResults/?q=" + Request["searchstring"]);
   }
  }

这是通过jQuery在enter上提交的,如下所示:

$(document).ready(function() {
var $search = $('#searchstring');
original_val = "@original_value";
$search.focus(function() {
    if ($(this).val() === original_val) {
        $(this).val('');
    }
}).blur(function() {
    if ($(this).val() === '') {
        $(this).val(original_val);
    }
}).keypress(function(e) {
    if (e.which == 13) {
        $('form#searchForm').submit();
    }
}); });​

我的问题是,一旦我将搜索表单放在页面上,服务器端表单就会被禁用。 例如:我有一个常规的asp.net会员登录控件,一旦搜索表单在页面上,就会停止回发。

我在google上看了一下,但我能找到的只是一个人在一页上谈论两个SERVER端表单。也许这是微不足道的,但我无法让它发挥作用。

谢谢!

1 个答案:

答案 0 :(得分:1)

您可能正在嵌套这两种形式。在这种情况下,外部的(或内部的,取决于浏览器)将无法工作。

修复此问题非常简单:只需将包含的表单移到其包含的表单之外。