如何从视图到控制器同时传递Formcollection和Model值?

时间:2015-06-09 19:43:16

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

我的cshtml页面有这样的代码

model Kouponer.Models.person_T  
@using (Html.BeginForm("BuynowForm", "Home"))
{    
    <label>@Model.name</label>
    <label>address</label>
    @Html.TextBox("address")<div>
    <input type="submit" value="Submit" class="btn btn-primary" />
}

我当前的actionresult方法是

[HttpPost]
public ActionResult BuynowForm(FormCollection col)
{  string address = col["address"];
        return View();
}

这里我只得到formcollection值。如何传递模型 formcollection?

2 个答案:

答案 0 :(得分:3)

Controller命名空间的System.Web.Mvc类中,有一个名为HttpRequestBaseRequest属性,其中包含当前http请求的所有数据。在其属性中,有一个名为NameValueCollectionForm属性,您正在寻找。

用法如下:

[HttpPost]
public ActionResult BuynowForm(person_T model)
{
    string addressFromModel = model.Address;
    string addressFromRequest = Request.Form["address"];
    return View();
}

答案 1 :(得分:1)

除非我完全遗漏了某些内容,否则您应该只需在控制器的sig上添加模型类型。

[HttpPost]
public ActionResult BuynowForm(Models.person_T model, FormCollection col)
{  string address = col["address"];
   string addressFromModel = model.Address;
   return View();
}

但是,如果您要使用模型绑定,则需要FormCollection对象似乎是多余的。我会阅读评论中给出的链接,然后选择模型绑定。