Javascript var为Razor参数

时间:2013-03-06 15:45:04

标签: javascript c# jquery asp.net-mvc razor

这看起来很简单,但我到处搜索,找不到一个简单的方法来做到这一点。我有一个带有搜索按钮的文本框,我正在调用一个动作结果,它将在数据库中搜索与我的文本框中的内容匹配的值。一切都按预期工作,除了我的动作结果(在javascript点击函数中从剃刀调用)需要一个文本框中的参数(var policy),我找不到在剃刀动作结果调用中使用该值的方法。 / p>

这是我的文本框和处理它的javascript。 “PolicyNum =”是我试图传递“var policy”

的值的地方

文本框:

<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">&nbsp;</a>
</span>

使用Javascript:

$(function () {
    $("#polSearch").click(function () {
        var policy = $("#polText").val();
        location = '@Url.Action("SearchByPolicy", new { policyNum =  })';
    });
});

此代码全部位于我的主视图中。

3 个答案:

答案 0 :(得分:2)

你不会以这种方式实现你想要的。您的困惑是可以理解的:Razor变量在HTML和JS执行之前呈现。

使用URL方法你会是更好的服务器

$(function () {
    $("#polSearch").click(function () {
        var policy = $("#polText").val();
        location = '{Controller}/SearchByPolicy/" + policy';
    });
});

答案 1 :(得分:1)

使用Html.ActionLink代替a元素。

@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");
    });
});

答案 2 :(得分:0)

Razor运行服务器端,JS客户端。您需要在Razor中提供无参数URL并使用JS在其中设置ID。类似的东西:

location = '@Url.Action("SearchByPolicy")' + policy;