2013-05-07 59 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

相关问题