在ASP.NET MVC 4中发布数据

时间:2014-09-17 17:29:22

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

我目前正在开发一个ASP.NET MVC 4应用程序。我是ASP.NET MVC的新手。现在,我有一个像这样编码的表格:

<form role="form" method="post" action="/contact/new">
  <div class="row">
    <div class="col-xs-12">
      <div class="form-group">
        <label for="name">Name</label>
        <div id="name">
          <input class="form-control" type="text" autocomplete="off" />
        </div>
      </div>

      <div class="form-group">
        <label for="gender">Gender</label>
        <select id="gender" class="form-control">
          <option value="m">Male</option>
          <option value="f">Female</option>
        </select>
      </div>

      <div class="form-group">
        <label for="email">Email Address</label>
        <input class="form-control" type="email" autocomplete="off" />
      </div>
   </div>
   <button type="submit" class="btn btn-primary">Submit</button>
</form>

我的控制器和操作如下所示:

public class ContactController : Controller
{
    public ActionResult New()
    {
        return View();
    }

    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult New()
    {
        return View();
    }
}

我的挑战是,我不知道在控制器中为HttpPost动作的参数添加什么。我该放什么?

谢谢!

2 个答案:

答案 0 :(得分:1)

MVC 基于模型视图控制器。你应该有一个View模型,你的视图应该强烈地键入它的模型。

如果您不希望强类型视图包含某些Model类,则必须从Request读取表单数据:

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult New(FormCollection form)
{
        string Name = form["UserName"].ToString();       
        return View();
}

并在输入元素中添加 name 属性:

<input class="form-control" type="text" name="UserName" autocomplete="off" />

您应该看到这几个链接,用于理解强类型视图和表单帖子:

Dyanmic VS Strong Typed Views

What is strongly typed View in asp.net mvc

Why we need Strongly typed View

答案 1 :(得分:0)

首先,您需要确保填写表单控件上的/ name / attributes。

然后,您应该定义一个名为NewContactViewModel的ViewModel类和您的ActionResult:

public class NewContactViewModel
    {
        public string name { get; set; }
        public string gender { get; set; }
        public string email { get; set; }
    }

[HttpPost]
public ActionResult New(NewContactViewModel model)
{


}