Javascript变量作为Razor参数
这看起来很简单,但我到处都找遍了,找不到一个简单的方法。我有一个带有搜索按钮的文本框,我正在调用一个操作结果,该结果将在数据库中搜索与文本框中内容匹配的值。除了我的操作结果(在javascript单击函数中从razor调用)需要文本框中的参数(var策略)之外,所有操作都按预期进行,我找不到在razor操作结果调用中使用该值的方法 这是我的文本框和处理它的javascript。“PolicyNum=”是我试图传递“var policy”值的位置” 文本框:Javascript变量作为Razor参数,javascript,c#,jquery,asp.net-mvc,razor,Javascript,C#,Jquery,Asp.net Mvc,Razor,这看起来很简单,但我到处都找遍了,找不到一个简单的方法。我有一个带有搜索按钮的文本框,我正在调用一个操作结果,该结果将在数据库中搜索与文本框中内容匹配的值。除了我的操作结果(在javascript单击函数中从razor调用)需要文本框中的参数(var策略)之外,所有操作都按预期进行,我找不到在razor操作结果调用中使用该值的方法 这是我的文本框和处理它的javascript。“PolicyNum=”是我试图传递“var policy”值的位置” 文本框: <span class="k-t
<span class="k-textbox k-space-right" style="width: 185px">
<input id="polText" type="text" />
<a id="polSearch" href="#" class="k-icon k-i-search"> </a>
</span>
这些代码都位于我的主视图中。Razor运行服务器端,JS客户端。您需要在Razor中提供一个无参数URL,并使用JS在其中设置ID。比如:
location = '@Url.Action("SearchByPolicy")' + policy;
你不可能通过这种方式实现你想要的。您的困惑是可以理解的:Razor变量在HTML和JS执行之前呈现 使用URL方法将是更好的服务器
$(function () {
$("#polSearch").click(function () {
var policy = $("#polText").val();
location = '{Controller}/SearchByPolicy/" + policy';
});
});
使用而不是元素
@Html.ActionLink("Action", "Controller",
new { policy = ""},
new { id = "polSearch", class="k-icon k-i-search"})
剧本
$(function () {
$("#polSearch").click(function () {
var policy = $("#polText").val();
location = $(this).attr("href");
});
});
您不能简单地将href
设置为您的操作url吗?不需要javascript。如果其他人说razor将在html之前呈现,则不需要。这对链接有效,但我仍然需要从texbox中获取参数。实际上,Razor在服务器上呈现html和javascript,然后将其发送到浏览器,在那里解析、执行和显示。聪明。处理渲染前的问题。
$(function () {
$("#polSearch").click(function () {
var policy = $("#polText").val();
location = $(this).attr("href");
});
});