Asp.net mvc 3 使用razor创建Html帮助器进行搜索

Asp.net mvc 3 使用razor创建Html帮助器进行搜索,asp.net-mvc-3,razor,Asp.net Mvc 3,Razor,我已经创建了一个Html帮助程序,用于搜索用户使用Razor帮助程序内联提供的文本。 我写的代码如下 <script type="text/javascript"> $('#companyName').change(function () { var searchTerm = $(this).val(); @Search(searchTerm); }); </script> <p>Search For:<

我已经创建了一个Html帮助程序,用于搜索用户使用Razor帮助程序内联提供的文本。 我写的代码如下

<script type="text/javascript">
    $('#companyName').change(function () {
        var searchTerm = $(this).val();
        @Search(searchTerm);
    });
</script>

<p>Search For:</p>
@Html.TextBox("companyName", Model)

@helper Search(string searchTerm)
 {
    if (searchTerm !="" || searchTerm != null)
    {
        @searchTerm;
    }
    else
    {
        @searchTerm.Substring(0, 7)<text>...</text>
    }
    }

$('#companyName')。更改(函数(){
var searchTerm=$(this.val();
@搜索(搜索词);
});
搜索:

@文本框(“公司名称”,型号) @辅助搜索(字符串搜索术语) { if(searchTerm!=“”| | searchTerm!=null) { @搜索词; } 其他的 { @searchTerm.Substring(0,7)。。。 } }

这里我想把textbox的值传递给searchTerm。我如何才能做到这一点?

剃须刀助手在服务器上执行。在您的情况下,您正在订阅客户端上
文本框
.change()
事件。因此,您需要编写客户端javascript处理程序,而不是Razor助手:

<script type="text/javascript">
    $('#companyName').change(function () {
        var searchTerm = $(this).val();
        Search(searchTerm);
    });

    function Search(searchTerm) {
        // do the search here
    }
</script>

<p>Search For:</p>
@Html.TextBox("companyName", Model)

$('#companyName')。更改(函数(){
var searchTerm=$(this.val();
搜索(搜索词);
});
函数搜索(searchTerm){
//在这里搜索
}
搜索:

@文本框(“公司名称”,型号)
剃须刀助手在服务器上执行。在您的情况下,您正在订阅客户端上
文本框
.change()
事件。因此,您需要编写客户端javascript处理程序,而不是Razor助手:

<script type="text/javascript">
    $('#companyName').change(function () {
        var searchTerm = $(this).val();
        Search(searchTerm);
    });

    function Search(searchTerm) {
        // do the search here
    }
</script>

<p>Search For:</p>
@Html.TextBox("companyName", Model)

$('#companyName')。更改(函数(){
var searchTerm=$(this.val();
搜索(搜索词);
});
函数搜索(searchTerm){
//在这里搜索
}
搜索:

@文本框(“公司名称”,型号)
html助手在服务器端工作。JavaScript在客户端工作。你不能像那样从JavaScript调用html助手,它根本不存在。我想你正在寻找一个模板解决方案。。。搜索jquerytemplateshtml助手在服务器端工作。JavaScript在客户端工作。你不能像那样从JavaScript调用html助手,它根本不存在。我想你正在寻找一个模板解决方案。。。搜索jquery模板感谢您的建议。但是我想创建一个名为search的助手文件,其中的参数是searchTerm,它是从视图中的文本框传递的。你能为我提供一个更好的解决方案吗?你到底想达到什么目的?您想在用户将某些内容更改为文本框时调用控制器操作吗?是的,我想创建类似@Html.Search(argument)的内容,以便将视图中的参数传递给控制器。在这种情况下,请将您的文本框放在一个表单中:
@使用(Html.BeginForm(“SomeAction”,“SomeController”){@Html.textbox(“companyName”),型号)}
。现在,您可以像以前一样订阅文本框的.change事件,并提交包含该事件的表单:
$(this).closest('form').submit()。我不明白你想写什么。谢谢你的建议。。。我已经使用了一个按钮提交并且正在工作,我想创建一个助手,它将@Html.TextboxFor(参数)替换为@Html.Search(参数)。。例如@using Html.search(searchTerm){显示包含与searchTerm相关数据的弹出框的代码}感谢您的建议。但是我想创建一个名为search的助手文件,其中的参数是searchTerm,它是从视图中的文本框传递的。你能为我提供一个更好的解决方案吗?你到底想达到什么目的?您想在用户将某些内容更改为文本框时调用控制器操作吗?是的,我想创建类似@Html.Search(argument)的内容,以便将视图中的参数传递给控制器。在这种情况下,请将您的文本框放在一个表单中:
@使用(Html.BeginForm(“SomeAction”,“SomeController”){@Html.textbox(“companyName”),型号)}
。现在,您可以像以前一样订阅文本框的.change事件,并提交包含该事件的表单:
$(this).closest('form').submit()。我不明白你想写什么。谢谢你的建议。。。我已经使用了一个按钮提交并且正在工作,我想创建一个助手,它将@Html.TextboxFor(参数)替换为@Html.Search(参数)。。例如@using Html.search(searchTerm){显示包含与searchTerm相关数据的弹出框的代码}