如何在ASP.NET Razor中将输入文本参数传递给C#函数?

时间:2016-01-29 18:41:01

标签: c# asp.net razor

我是ASP.NET Razor的新手,我试图建立一个非常简单的东西,到目前为止还没有成功。

我有一个按钮,并在HTML中输入字段。我想要的是当我点击按钮时,用输入字段的文本调用C#函数。

我可以调用该函数,但我无法传递参数。我怎么能参考这个输入字段中的文字?

我在互联网上搜索过,但我还没有找到一个简单的解决方案。有吗?我喜欢这样的东西:

<input id="Text1" name="Text1" type="text" />
<input id="Button1" type="button" value="button" onclick="@{Class1.Myfunction(Text1.InnerText);}" />

谢谢!

修改(解决):

感谢Sam的评论,我能够将参数传递给另一个类的C#函数。我已将以下代码放在顶部以捕获POST参数:

@{
    if (IsPost)
    {
      Class1.Myfunction(Request.Form["Text1"]);
    }
}

从剃须刀网站发送表单时,会将Text1字段值传递给C#函数。

<form method="post">
    <input id="Text1" name="Text1" type="text" />
    <input id="Submit1" type="submit" value="submit" />
</form>

非常感谢!

2 个答案:

答案 0 :(得分:1)

据我所知,调用服务器端功能的唯一方法是通过某种HTTP操作,如POST或GET。所以,你需要做类似的事情:

your_view.cshtml:

<input id="Text1" name="Text1" type="text" />
<input id="Button1" type="button" value="button" />

@section scripts
{
    <script type="text/javascript">

        $(document).ready(function () {
           $('#Button1').on('click', function (event) {
                    $.ajax({
            type: 'GET',
            url: <server_side_functionality_URL>,
            data: $("#Text1").val(),
            success: function (result) {
                       console.log(result);
                 },
            error: function (errorResult) {
                       console.log(result);
                 }
          });
        });


        });

    </script>
}

答案 1 :(得分:0)

视图呈现后,服务器端代码已完成,用户所做的任何更改都属于客户端。在回发时,该值将在模型中可用,因此您可以访问该值并在其上调用MyFunction。

否则,您需要使用javascript:

<input id="Button1" type="button" value="button" onclick="doSomething(event)" />

在doSomething中(注意我在我的例子中使用JQuery):

function doSomething(e) {
    var text = $("#Text1").val();
    //Process it somehow on the client only, not server
}

然后你可以在JavaScript中做任何你需要的事情;不知道MyFunction做了什么。我无法再从那里得到任何帮助......