0

您好我想在表单上创建一个搜索框。

我希望用户能够查找人名,结果列表出现在下面,然后用户单击所需的人名。

这很容易。

但是,我希望将此记录与隐藏的 id 参数一起添加到“表单”中。

这样用户就可以单击提交并提交人名和其他字段。

我遇到的问题是使用搜索框我需要一个 Html.Beginform 但我还需要一个表单来提交最终记录。我无法做到这一点,因为我需要一个嵌套的表单,我听说这不是一个好习惯。我知道“搜索”按钮表单可能是主表单的一部分,但我不想提交整个表单只是为了查找名称。

理想情况下,使用部分视图进行某种 AJAX 调用可能是答案,但即使使用 AJAX 调用,我仍然需要表单中的表单。

希望对新手有所帮助。谢谢。

4

1 回答 1

0

这是一个非常简单的方法。

@using(Html.BeginForm("save", "record"))
{
//your main form
<a id="lookup">find a person</a>
}

<div class="hidden" id="lookupdialog">
<form id="lookupform">  //Form is optional - just for 'postable' area indication

    //lookup form
         <input type="text" id="query">
     <a id="search">search</a>

</form>
</div>

所以你有一个可见的主表单,一个隐藏的查找表单。然后你使用 javascript 来显示对话框。像在 jquery 中的东西:

$('#lookup').click(/*show #lookupdialog in a dialog*/);

所以现在你可以看到你的辅助表单了。当用户单击搜索时,您将向服务器发送请求。

$.ajax({
       type: "POST",
       url: "/persons/search",
       data: {query: $(#query).text()},
       success: function(data)
       {

           //show the list of persons found

       }
     });

然后,当用户选择一个人时,您将关闭对话框并将所选项目的 id 保存到您的主窗体。

于 2013-09-25T20:10:16.653 回答