2013-05-07 61 views
0

我正在使用MVC2 ASP項目。 我得到的問題是我的cotroller沒有捕捉到來自視圖的價值。 我使用的FormCollection可以捕捉到文本框中的值在我看來, 但是當我運行它,收藏顯示空所有的時間如何通過Formcollection獲取從視圖到控制器的值MVC

這裏我控制器

[HttpPost] 
    public ActionResult Insert(FormCollection collection) 
    { 

     ProductionOrderItem item = new ProductionOrderItem(); 

     item.ProductionOrderNo =collection["DetailsView1$txtName"]; 
     item.ProductionOrderNo = collection["DetailsView1$TexMainOrder"]; 
     item.OrderDate = new DateTime(DateTime.Now.Year, DateTime.Now.Month,DateTime.Now.Day); 

} 

這裏我ASPX頁面

<asp:DetailsView ID="DetailsView1" runat="server" AutoGenerateRows="False" 
     ClientIDMode="Static" DefaultMode="Insert" Height="50px" Width="125px" 
    EnableViewState="False"> 
     <Fields> 
      <asp:TemplateField HeaderText="ProductionOrderNo"> 
       <InsertItemTemplate> 
        <asp:TextBox ID="txtName" runat="server" ></asp:TextBox> 
       </InsertItemTemplate> 
      </asp:TemplateField> 
      <asp:TemplateField HeaderText="MainOrder"> 
       <InsertItemTemplate> 
        <asp:TextBox ID="TexMainOrder" runat="server" ></asp:TextBox> 
       </InsertItemTemplate> 
      </asp:TemplateField> 
+1

你不應該使用服務器控件來,如果這是MVC。你有沒有檢查在HTML文本框生成的名稱是你期望他們是什麼? – 2013-05-07 16:50:52

+0

不明白你是什麼意思, – 2013-05-07 17:27:58

回答

0

我修好了。 我應該給的完整路徑,從哪裏趕數據,

所以insted的的

item.ProductionOrderNo =collection["textProductionOrderNo"]; 

我寫

​​
+0

這就是我建議你做的。您應該將其標記爲答案。 – 2013-05-08 17:19:50

+0

我沒有真正理解你,但感謝任何方式:) – 2013-05-09 05:33:08

0

我認爲在您的視圖中使用aspx文本框控件並不是一個好主意我寧願使用regulat html文本框

<InsertItemTemplate> 
       <input type="txtName" id="txtName" name="fname"> 
       </InsertItemTemplate> 
      </asp:TemplateField> 
      <asp:TemplateField HeaderText="MainOrder"> 
       <InsertItemTemplate> 
       <input type="TexMainOrder" id="TexMainOrder" name="fname"> 
       </InsertItemTemplate> 


    item.ProductionOrderNo =collection["txtName"]; 
    item.ProductionOrderNo = collection["TexMainOrder"]; 

即使你決定使用它,你應該添加的名稱,並使其客戶端ID模式的靜態

<asp:TextBox ID="txtName" name="txtName" clientIdMode="static" runat="server" ></asp:TextBox> 
<asp:TextBox ID="TexMainOrder" name="TexMainOrder" ClientIdMode="static" runat="server" ></asp:TextBox> 
+0

它does not幫助! – 2013-05-07 17:16:58

+0

仍然需要空當我看當地人 – 2013-05-07 17:26:59

0

在我看來,如果你想使用的FormCollection你需要一個表格。我的標記中沒有看到一個。

+0

所有Detailsview被放置在

tages – 2013-05-07 19:49:51

+0

FormCollection是否爲空?或者您試圖從中拉出的物品?換句話說,你在看'item.ProductionOrderNo'並在分配'collection [「DetailsView1 $ TexMainOrder」]後找到它爲空;''到它?還是你直接檢查收藏?如果是第一個,請嘗試第二個。可能是未按預期命名的事物。 – KennyZ 2013-05-07 20:14:18

+0

是的,我沒有看到'item.ProductionOrderNo'後分配集合,它顯示爲空。 – 2013-05-07 23:49:25

相關問題