从文本框传递值到控制器

7

我应该如何从文本框 "EmailList" 中获取值并将其发送给控制器?我一直在使用WebForms,这是我第一次接触MVC。

视图:

    @Html.TextBox("EmailList")
    @Html.Action("SendEmails")

控制器:

    public ActionResult SendEmails()
    {

        // some operations on EmailList
    }

编辑


如果我只需要打开简单的“onclick”方法,而不是actionresult怎么办?例如 -

       public void SendEmails()
        {
            // some operations on EmailList
        }
3个回答

4

为了将值传回控制器,首先需要发出 POST 请求,因此您需要设置控制器动作以进行 POST

[HttpPost]
public ActionResult SendEmails(string EmailList)
{
}

请注意我添加了一个参数EmailList,它的名称与表单上的控件完全相同。接下来我们需要确保你的HTML设置正确,因此当你构建form控件时,请按照以下方式构建:

@Html.BeginForm("SendEmails", "{ControllerNameHere}", FormMethod.Post)

然后你的文本框,不要管它,它应该可以正常工作。


请告诉我,如何防止该表单被“F5”按钮或重新加载页面刷新? - whoah
哇,你想阻止用户重新加载页面吗?你是说在提交期间吗?还是完全禁止重新加载? - Mike Perrenoud

3
如果您想将EmailList传递给一个方法,那么您应该使用包含电子邮件文本字段的表单。
@using (Html.BeginForm("",""))
{
    @Html.TextBox("EmailList")
    <input type="submit" id="emailSubmit" value="Submit Email" />
}

然后编写脚本来覆盖表单的默认行为。
<script type="text/javascript">
$(function () {
        $("form").submit(function (e) {

            e.preventDefault();
            var emailValue = $("#EmailList").val();
            $.ajax({
                url: '/Home/SendEmails',
                data: { text: emailValue }
            });
        });
    });
</script>

现在您可以像这样为您的方法添加参数:
public void SendEmails(string text)
        {
            string email=text;
            //or you can look into the Request.Form or Request.Querystring 
        }

希望能够帮到您。

1
有一个模型。
public class EmailSubmitModel
{
    public string EmailList {get; set;}
}

在你的控制器中。
public ActionResult SendEmails(EmailSubmitModel emailSubmitModel)
{


}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接