ASP.NET-MVC中Form Form上的FormCollection为空

Mar*_*ski 30 c# asp.net asp.net-mvc

我使用过去经常使用的方法发布一个非常简单的表单.显示我的代码可能更容易,而不是输入冗长的解释.这是HTML:

<% Html.BeginForm("CreateMarketingType", "ListMaintenance"); %>
    <div id="ListMaintenanceContainer">
        <table>
            <tr>
                <th>Marketing Type Id</th>
                <th>Marketing Type Name</th>
            </tr>                    
                <%foreach (MarketingType marketingType in ViewData.Model.MarketingTypes) %>
                <%{ %>
                    <tr>
                        <td><%= marketingType.MarketingTypeId.ToString() %></td>
                        <td><%= marketingType.MarketingTypeName %></td>
                    </tr>
                <%} %>
        </table>
        <div>
            <fieldset id="fsSaveNewMarketingType">
                <legend>Add New Marketing Type</legend>
                <label for="txtNewMarketingTypeName">New Marketing Type Name:</label>
                <input type="text" id="txtNewMarketingTypeName" />
                <input type="submit" value="Save" id="CreateMarketingType" />
            </fieldset>
        </div>                    
    </div>
<% Html.EndForm();%>
Run Code Online (Sandbox Code Playgroud)

这是控制器代码:

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult CreateMarketingType(FormCollection form)
{
    string newMarketingTypeName = Request.Form["txtNewMarketingTypeName"].ToString();

    MarketingType newMarketingType = new MarketingType() { MarketingTypeName = newMarketingTypeName };

    _marketingTypeRepository.AddNewMarketingType(newMarketingType);

    return View("ListMaintenance", GetModel());
}
Run Code Online (Sandbox Code Playgroud)

提交按钮发布表单,并调用该方法,但我的参数中定义的表单对象为空.我也试过Request.Form,我得到了相同的结果.我在这里错过了什么吗?

Cra*_*ntz 89

您的所有输入都没有名称属性.没有名字=不在FormCollection中.

  • @Mark,这是HTTP规范所必需的.`id` =如何在DOM中找到它.`name` =在`form`中提交的内容. (12认同)
  • 哎哟 - 这就是我在WebForms上成长的结果!我认为id属性传递了表单上的值.谢谢回复!! (9认同)
  • 果然,他是对的!(链接爱:http://www.w3.org/TR/html401/interact/forms.html#h-17.2)控件在发布时需要'name'属性.+1帮我停止拉头发. (3认同)