2012-01-25 75 views
0

我正在創建一個動態的文本框列表。當用戶提交的字段中的值回到空值時。我想我錯過了一些東西。MVC3文本框提交空值?

這是我的產品型號:

public class EnqProduct 
{ 
    public string Id { get; set; } 
    public string Product { get; set; } 
    public string Quantity { get; set; } 
} 

這是頁面模型,其中包括上面的列表。

public IList<EnqProduct> EnqProduct { get; set; } 

這是我如何設置模式:

IList<EnqProduct> items2 = Session["enquiry"] as IList<EnqProduct>; 
var EnquiryModel = new Enquiry { 
     EnqProduct = items2 
};  
return View(EnquiryModel); 

,這是我怎麼顯示的字段:

foreach (var item in Model.EnqProduct) 
{ 
<tr> 
    <td> 
     <span class="editor-field"> 
     @Html.TextBox(item.Id, item.Product) 
     @Html.ValidationMessageFor(m => m.A1_Enquiry) 
     </span> 
     <br><br>        
    </td> 
    <td> 
     <span id = "field" class="editor-field"> 
     @Html.TextBox(item.Id, item.Quantity) 
     </span>  
     <br><br>        
    </td> 
    </tr> 
} 

當用戶提交的字段回到控制器空值?

回答

2

我會建議你使用編輯器模板並用以下替換您的foreach循環:

@model Enquiry 
<table> 
    <thead> 
     <tr> 
      <th>product name</th> 
      <th>quantity</th> 
     </tr> 
    </thead> 
    <tbody> 
     @Html.EditorFor(x => x.EnqProduct) 
    </tbody> 
</table> 

,然後定義它會自動被渲染爲EnqProduct集合中的每個元素(~/Views/Shared/EditorTemplates/EnqProduct.cshtml)編輯模板:

@model EnqProduct 
<tr> 
    <td> 
     @* We include the id of the current item as hidden field *@ 
     @Html.HiddenFor(x => x.Id) 

     <span class="editor-field"> 
      @Html.EditorFor(x => x.Product) 
      @Html.ValidationMessageFor(x => x.Product) 
     </span> 
    </td> 
    <td> 
     <span id="field" class="editor-field"> 
      @Html.EditorFor(x => x.Quantity) 
     </span>  
    </td> 
</tr> 

現在,當你提交表單你會得到正確的值:

public class HomeController: Controller 
{ 
    public ActionResult Index() 
    { 
     var model = new Enquiry(); 
     model.EnqProduct = ... 
     return View(model); 
    } 

    [HttpPost] 
    public ActionResult Index(Enquiry model) 
    { 
     // the model.EnqProduct will be correctly populated here 
     ... 
    } 
} 

至於默認模型聯編程序對輸入字段所要求的正確接線格式,我會建議您查看following article。當某些模型未正確填充時,它將允許您更輕鬆地調試功能中的問題。只需使用FireBug查看並將值的名稱發佈即可,您將立即知道它們是正確還是正確。

+0

這就是我需要感謝! – Beginner