如何在MVC5中调用HttpPost ActionResult?

时间:2014-10-16 21:29:40

标签: html asp.net-mvc

我的应用中有一个联系人视图,它包含一个表单,定义如下:

<form role="form" style="width:100%; float:left;">
    <div class="form-group">
        <a href="#"><img src="~/Content/img/zarf.png" class="zarf-pos"></a>
    </div>

    <div class="form-group">
        <label for="exampleInputEmail1">Name and Surname</label>
        <input type="text" name="fullName" class="form-control" id="exampleInputEmail1" placeholder="Enter your full name" required>
    </div>
    <div class="form-group">
        <label for="exampleInputPassword1">E-Mail</label>
        <input type="email" name="emailAddress" class="form-control" id="exampleInputPassword1" placeholder="Enter your e-mail address" required>
    </div>
    <div class="form-group">
        <label for="exampleInputEmail1">Write to us</label><br>
        <textarea name="message" class="form-control" rows="5" placeholder="How can we help you?" required></textarea>
    </div>

    <div class="form-group">
        <button type="submit" class="btn btn-default reg-position">Send</button>
    </div>
</form>

然后,在我的控制器中,我有两个ActionResults,一个HttpGet和一个HttpPost,定义如下:

[HttpGet]
public ActionResult Contact()
{
    return View();
}

[HttpPost]
public ActionResult Contact(string fullName, string emailAddress, string message)
{  // some functionality }

但是,当我填写表单并单击“发送”按钮时,它会重定向到空的“联系”页面。关键是我需要有两个Contact方法,而在我的Post方法中,我有一些代码假定字符串不为空。如果我只有一个联系方法,我会收到一条错误消息,指出该字符串为空,并且不显示该视图。所以,我决定使用两种方法,但不知道在按下按钮时如何调用post方法。

1 个答案:

答案 0 :(得分:2)

假设您使用Razor创建视图,请按以下方式定义表单:

@using( Html.BeginForm() )
{
    <div class="form-group">
        <a href="#"><img src="~/Content/img/zarf.png" class="zarf-pos"></a>
    </div>

    <div class="form-group">
        <label for="exampleInputEmail1">Name and Surname</label>
        <input type="text" name="fullName" class="form-control" id="exampleInputEmail1" placeholder="Enter your full name" required>
    </div>
    <div class="form-group">
        <label for="exampleInputPassword1">E-Mail</label>
        <input type="email" name="emailAddress" class="form-control" id="exampleInputPassword1" placeholder="Enter your e-mail address" required>
    </div>
    <div class="form-group">
        <label for="exampleInputEmail1">Write to us</label><br>
        <textarea name="message" class="form-control" rows="5" placeholder="How can we help you?" required></textarea>
    </div>

    <div class="form-group">
        <button type="submit" class="btn btn-default reg-position">Send</button>
    </div>
}

这将确保生成正确的<form>元素以回发您的操作。

P.S。只是一些术语管家...你没有调用ActionResult,你调用Actions并返回ActionResults。如果您正在使用正确的名称,那么当您与其他开发人员交谈时,它会有所帮助。