2013-05-27 61 views
1

我正在处理一个MVC项目,我想通过一个FormCollection,填充表单数据,并将其发布到我的控制器中的操作方法。下面是该视图的例子:FormCollection不填充

<asp:TextBox ID="txtClientLastName" name="txtClientLastName" runat="server" class="focus"/> 

(是的,我知道ASP控制在MVC观点并不好,但是这就是我有回到标签之间观看结束代码,以及这是为什么!我还没有取代他们)

我用一个辅助链接到我的行动:

<%=Html.ActionLink("Save","ClientInformationEdit",new {id=Model.PersonId})% 

这就要求我的行动:

public ActionResult ClientInformationEdit(int id, FormCollection form) 
    { 
     //rptLOA_GridCommands(form, id); 

     CIHelper ch = new CIHelper(); 


     ch.person.LastName = form["txtClientLastName"]; 
     db.SaveChanges(); 

     return View(ch); 
    } 

我的passes the correct value but FormCollection form is null so form["txtClientLastName"] is null and I don知道为什么。

+1

你把哟你在表单html元素内提交按钮?如果可能,请发表您的看法 – forseta

+0

。 –

+0

我面临同样的问题 – Steve

回答

0

添加后的属性如下图所示:

 [HttpPost] 
public ActionResult ClientInformationEdit(int id, FormCollection form) 
    { 
     //rptLOA_GridCommands(form, id); 

     CIHelper ch = new CIHelper(); 


     ch.person.LastName = form["txtClientLastName"]; 
     db.SaveChanges(); 

     return View(ch); 
    } 

如果你想发布在超链接上单击窗体,然后添加以下代码:

<%=Html.ActionLink("Save","ClientInformationEdit",new {id=Model.PersonId,onclick="document.getElementById('form-id').submit();"})%> 
+0

感谢您的回复。我在添加HttpPost和过去遇到404错误时遇到了问题。已在视图 – user2284341

+0

中显示一个表单标签,以便检查问题 –

0

试试这个:

@using (Html.BeginForm("Save", "ClientInformationEdit", FormMethod.Post)) 
{ 
    <input type="hidden" value="@Model.PersonId"/> 
    <asp:TextBox ID="txtClientLastName" name="txtClientLastName" runat="server" class="focus"/>  
    <input type ="submit"/> 
} 

你的看法