MVC3剃刀>输入字段

时间:2011-02-10 19:14:52

标签: forms asp.net-mvc-3 razor

在我的一个视图中,我有一个INPUT字段,我放置光标并通过阅读器扫描MagCard。这导致该框中的一系列字符,以ENTER(char 13)结尾,我通过jQuery捕获并将我的表单发布到另一个要处理的页面。

基本上我希望输入框中的字符串在控制器中可用,所以我可以使用c#函数来处理它,而不是通过javascript在所有客户端进行处理。

从客户端代码获取托管代码的值似乎已经找不到我到目前为止找到的所有指南。

任何帮助表示感谢,我之所以要POST而不是GET是因为它充满了特殊的字符,?和空格需要保留。

任何方法都会受到重视。

@Darin Dimitrov 对不起,我不清楚。

虽然你的建议有效,但引导我一点点我需要的东西。 (无论如何,这都很方便。)

因为我不想要返回值,所以我试图将Home / ProcessScan作为我的表单的操作发布。然后在我的控制器中做这个:

    [AcceptVerbs(HttpVerbs.Post)]
    public ActionResult ProcessScan(string scanSeek)
    {
        string myScan = scanSeek;
        string name = myScan.Substring(1, 13);
        return Redirect("../reservation?name=" + name);
    }

现在这对我有用。不得不:
*使用[AcceptVerbs(HttpVerbs.Post)]声明
*将我的类型更改为ActionResult,而不是void,因为重定向需要在它前面返回

注意:对于我的重定向,我使用“../”,因为此视图不在Home。

2 个答案:

答案 0 :(得分:1)

由于您没有提供太多详细信息,您的问题很混乱。显然,onfocusonclick等事件只能通过客户端javascript来处理。你提到jquery和POST所以我想你在谈论AJAX。所以你可以发送这样的值:

$.post('@Url.Action("Foo")', { value: $('#mytextboxid').val() }, function(result) {
    // the value was successfully posted to the server
});

并且在服务器上您将执行以下控制器操作:

public ActionResult Foo(string value)
{
    // TODO: do something with the value and return a corresponding result
}

答案 1 :(得分:1)

假设输入ID为magCardCode,以便您可以使用Action来获取参数:string magCardCode

在这种情况下,您可以使用jquery ajax发布您的表单,如下所示:

<script>
    $(document).ready(function () {
        $("#submitForm").click(function () {
            $.ajax({
                url: '/MagCard/SubmitCode/,
                dataType: 'html',
                type: 'POST',
                success: function (data) {
                    // Use data
            });
        });

    });
</script>

现在,您的行动中可以访问该值!