2009-02-02 41 views
28

Tôi đang đăng một hình thức rất đơn giản bằng cách sử dụng một phương pháp tôi đã sử dụng thường xuyên trong quá khứ. Nó có thể dễ dàng hơn để hiển thị mã của tôi thay vì nhập một lời giải thích dài dòng. Đây là HTML:FormCollection rỗng trên mẫu bài viết trong ASP.NET-MVC

<% 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();%> 

Và đây là các mã điều khiển:

[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()); 
} 

Gửi bài viết nút biểu mẫu, và phương pháp này được gọi, nhưng đối tượng hình thức quy định tại thông số của tôi là trống rỗng. Tôi cũng đã thử Request.Form và tôi nhận được kết quả tương tự. Am i thiếu cái gì ở đây?

Trả lời

82

Không có yếu tố đầu vào nào có thuộc tính tên. Không có tên = không phải trong FormCollection.

+8

Ouch - đó là những gì tôi nhận được để lớn lên trên WebForms !! Tôi nghĩ thuộc tính id đã chuyển các giá trị thông qua trên biểu mẫu. Cảm ơn vi đa trả lơi!! –

+1

Cảm ơn! Tôi cũng nghĩ rằng thuộc tính id sẽ làm điều đó ... –

+0

Điều này thật đáng ngạc nhiên vì mọi thứ dường như chỉ hướng tới việc sử dụng id. Những điều không như họ dường như .. với tôi anyway .. –

0

Chúc tôi có thể đăng bài này dưới dạng nhận xét đơn giản, nhưng tôi không có đặc quyền đó ... Tôi đã thêm tất cả thuộc tính tên của mình và vẫn không có niềm vui. Hãy nhớ thêm thuộc tính tên của bạn vào chính biểu mẫu của bạn. Phải sử dụng quá tải cho HTML.BeginForm chấp nhận htmlAttributes.

3

Tôi gặp sự cố này và sau đó nhận ra rằng tôi đã vô hiệu hóa tất cả các điều khiển INPUT trước khi tôi gửi biểu mẫu (dưới dạng tính năng UX).

+0

Khi bạn tắt các trường, thao tác đó có xóa chúng khỏi FormCollection không? Tôi dường như có cùng một vấn đề. – WEFX

0

Tôi thấy rằng câu hỏi này đã được trả lời. Sau đây là một cách tiếp cận khác mà tôi đã sử dụng trong chế độ xem MVC, khi bộ sưu tập biểu mẫu trống. Sử dụng JavaScript/jQuery, nó đặt cặp giá trị tên thành một điều khiển ẩn được gắn vào biểu mẫu.

JavaScript/jQuery

$("#btnExport").click(function (event) { 
       event.preventDefault(); 

       //Append the parameter to the form 
       var practiceVal = $('#Practice').val(); 
       $('<input />').attr('type', 'hidden') 
        .attr('name', "Practice").attr('value', practiceVal) 
        .appendTo('#formHome'); 

       //Submit 
       $('#formHome').submit(); 
      }); 

Mẫu

<form id="formHome" method="post"> 
</form> 

Tham khảo Forms

Khi một mẫu được gửi để xử lý, một số điều khiển có name pa của họ ired với giá trị hiện tại của chúng và các cặp này được gửi với biểu mẫu

Các vấn đề liên quan