Razor视图没有向控制器发送输入?

时间:2016-03-19 18:03:20

标签: c# asp.net-mvc razor

我正在使用剃刀文件查看我的观点:

@using (Html.BeginForm("Save", "MyEventController", FormMethod.Post))
{
    <md-input-container class="md-block" flex-gt-xs="">
        <label>Title</label>
        <input type="text" name="title" />
    </md-input-container>

        <md-input-container class="md-block">
            <label>Address</label>
            <input type="text" name="address" id="txtAddress">
        </md-input-container>


        <md-button class="md-raised">
            <input type="submit" value="Save" />
        </md-button>
}

我想将我的输入发送到Controllers / EventController.cs中的控制器,如下所示:

public class MyEventController : Controller
{
    [HttpPost]
    public void Save(FormCollection collection)
    {            
        InputEvent y = new InputEvent();
        y.title = collection["title"];
        y.address = collection["address"];
    }
}

似乎永远不会调用Save()方法。我如何提交Save()?

我在Visual Studio 2015中开发

3 个答案:

答案 0 :(得分:3)

指定控制器时删除文本“Controller”。将其更改为,

Html.BeginForm("Save", "MyEvent", FormMethod.Post)

答案 1 :(得分:1)

从第二个参数“MyEventController”中删除“Controller”一词。所以它应该是“MyEvent”。

此外,我将创建一个模型(来自MVC的M),当发布表单时,它将接收一个漂亮的模型,而不是接收FormCollection。 ASP MVC将为您处理绑定。

此外,正如其他人所指出的那样,您可能希望最终将某些内容返回给客户端,以指定表单提交和处理是否成功。因此,您的行动不应该返回无效。大多数情况下,在这种情况下,你应该使用PRG模式 - 使用这种模式非常重要。

答案 2 :(得分:0)

尝试使用ActionResult代替void

来自MSDN

  

将开始标记写入响应。当用户提交表单时,请求将由操作方法处理。