如何从TextBox获取值到控制器方法MVC

时间:2014-12-02 11:53:17

标签: jquery asp.net-mvc textbox

我有以下MVC视图邀请用户注册我的网站

 @using (Html.BeginForm("Upload", "Tools", FormMethod.Post,
            new { @class = "form-horizontal", role = "form" }))
        {
            @Html.AntiForgeryToken()
            <h2>Invite Users</h2>
            <p class="text-info">@ViewBag.StatusMessage</p>
            <div class="form-group">
                @Html.LabelFor(m => m.EmailAddress, new { @class = "col-md-2 control-label" })
                <div class="col-md-10">
                    @Html.TextBoxFor(m => m.EmailAddress, 
                        new { @class = "form-control", id = "email" })
                    @Html.ValidationMessageFor(m => m.EmailAddress)
                </div>
            </div>
            <div class="form-group">
                @Html.Label("Access To", new { @class = "col-md-2 control-label" })
                <div class="col-md-10">
                    @Html.DropDownList("Product", new SelectList(
                        new List<Object> {
                            new { Text = "Product1", Value = "Product1" },
                            new { Text = "Product2", Value = "Product2" },
                            new { Text = "All", Value = "All" }},
                            "Value",
                            "Text"),
                            new { @class = "form-control", id = "product" })
                </div>
            </div>
            <div class="form-group">
                <div class="col-md-offset-2 col-md-10">
                    <input type="button" value="Invite User" class="btn btn-primary" />
                </div>
            </div>
        }

此视图有三个标签页,这是三个标签页中的第一个。 ViewModel为视图是

public class AdministratorViewModel
{
    public string EmailAddress { get; set; }
    public List<Download> Uploads { get; set; }
    public List<ApplicationUser> UserList { get; set; }
}

我有以下JavaScript将必填字段传回控制器

<script>
    $(function () {
        $("input[type=button]").click(function () {
            var data_email = $('#email').text();
            var data_product = $('#product option:selected').text();
            $.ajax({
                url: 'Tools/SendInvite',
                type: 'POST',
                data: { email: data_email, product: data_product },
                success: function (result) {
                }
            });
        });
    });
</script>

控制器方法是

[HttpPost]
[AllowAnonymous]
public async Task<ActionResult> SendInvite(
    string email, string product)
{
    ApplicationUser user = null;
    if (ModelState.IsValid)
    {
        user = await UserManager.FindByIdAsync(User.Identity.GetUserId());
        if (user.IsAdmin != null && (bool)user.IsAdmin)
        {
            ...
        }
    }
    return RedirectToAction("Index", "Tools");
}

此方法被触发,product正确并包含所选值。但是,email始终为空。

为什么电子邮件总是空的,如何将电子邮件传递给我的控制器?

感谢您的时间。

2 个答案:

答案 0 :(得分:1)

您需要使用.val()方法来使用jQuery获取textbox元素的实际值。

示例:

var data_email = $('#email').val();

尝试让我知道这是否解决了这个问题。

答案 1 :(得分:1)

var data_email = $('#email').text();这应该为空。 在此行下方尝试console.log(data_email),您会看到。

您可以获取输入字段的值

像这样:var data_email = $('#email').val();

或者像这样:var data_email = $('#email').attr('value');

相关问题