将带有Ajax的表单发布到ASP.NET MVC Controller

时间:2013-03-29 07:58:06

标签: .net ajax asp.net-mvc asp.net-mvc-4

当我点击链接“Foo”时,我点击LogOn操作中的断点,但用户名始终为null。我不明白为什么。

<a class="jqselect" id="myId" href="#">Foo</a>    
@using (Html.BeginForm("LogOn", "Account", FormMethod.Post, new { id = "fooForm" }))
{
    <input type="text" id="username"/>
}

<script type="text/javascript">
    $(document).ready(function () {
        $(".jqselect").click(function () {

            $.ajax({
                url: '/Account/LogOn',
                type: "Post",
                data: $('#fooForm').serialize(),
                success: function (result) {
                    if (result.success) {
                    }
                }
            });

        });
    });
</script>

[HttpPost]
public ActionResult LogOn(string username)
{
    Console.WriteLine(username);
    return new EmptyResult();
}

1 个答案:

答案 0 :(得分:3)

你必须给它一个名字:

<input type="text" id="username" name="username"/>

您实际上可以删除id并只有名称,控制器方法将识别它。

如果需要,您也可以使用模型,您可以像下面这样编写代码:

@Html.TextboxFor(m=>m.Username)

您的模型定义为:

public class LogOnModel {
    public string Username {get;set;}
}

,您的方法定义为:

[HttpPost]
public ActionResult LogOn(LogOnModel input)
{
}